- Timestamp:
- 08/23/05 16:57:02 (3 years ago)
- Location:
- trunk/rms/src
- Files:
-
- 2 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/rms/src/rms.cpp
r4176 r4193 180 180 181 181 // Register with the daemon, we only want the update user signal 182 m_nPipe = _licqDaemon->RegisterPlugin(SIGNAL_ UPDATExUSER);182 m_nPipe = _licqDaemon->RegisterPlugin(SIGNAL_ALL); 183 183 licqDaemon = _licqDaemon; 184 184 … … 397 397 } 398 398 case SIGNAL_UPDATExLIST: 399 break; 399 400 case SIGNAL_LOGON: 401 break; 402 case SIGNAL_EVENTxID: 403 AddEventTag(s->Id(), s->PPID(), s->Argument()); 404 break; 400 405 default: 401 406 break; 402 407 403 case SIGNAL_EVENTxID:404 //XXX Catch this405 break;406 408 } 407 409 delete s; 408 410 } 409 411 412 /*--------------------------------------------------------------------------- 413 * CLicqRMS::AddEventTag 414 *-------------------------------------------------------------------------*/ 415 void CLicqRMS::AddEventTag(const char *_szId, unsigned long _nPPID, unsigned long _nEventTag) 416 { 417 ClientList ::iterator iter; 418 for (iter = clients.begin(); iter != clients.end(); iter++) 419 { 420 (*iter)->AddEventTag(_szId, _nPPID, _nEventTag); 421 } 422 } 410 423 411 424 /*--------------------------------------------------------------------------- … … 461 474 data_line_pos = 0; 462 475 m_bNotify = false; 476 m_szEventId = 0; 477 m_nEventPPID = 0; 463 478 } 464 479 … … 473 488 if (m_szCheckId) 474 489 free(m_szCheckId); 490 } 491 492 /*--------------------------------------------------------------------------- 493 * CRMSClient::AddEventTag 494 *-------------------------------------------------------------------------*/ 495 void CRMSClient::AddEventTag(const char *_szId, unsigned long _nPPID, unsigned long _nEventTag) 496 { 497 if (m_szEventId && m_nEventPPID && 498 !strcmp(m_szEventId, _szId) && m_nEventPPID == _nPPID) 499 { 500 fprintf(fs, "%d [%ld] Sending message to %s.\n", CODE_COMMANDxSTART, 501 _nEventTag, _szId); 502 tags.push_back(_nEventTag); 503 free(m_szEventId); 504 m_szEventId = 0; 505 m_nEventPPID = 0; 506 } 475 507 } 476 508 … … 1038 1070 int CRMSClient::Process_MESSAGE() 1039 1071 { 1072 if (m_nEventPPID || m_szEventId) 1073 { 1074 //client is trying to send another message before we've received 1075 //the event tag for a previous one 1076 fprintf(fs, "%d Error, cannot send concurrent messages\n", CODE_INVALIDxCOMMAND); 1077 return -1; 1078 } 1040 1079 fprintf(fs, "%d Enter message, terminate with a . on a line by itself:\n", 1041 1080 CODE_ENTERxTEXT); … … 1057 1096 false, ICQ_TCPxMSG_NORMAL); 1058 1097 1059 fprintf(fs, "%d [%ld] Sending message to %s.\n", CODE_COMMANDxSTART,1060 tag, m_szId);1061 1098 m_nState = STATE_COMMAND; 1062 1099 1063 1100 if (m_nPPID == LICQ_PPID) 1101 { 1102 fprintf(fs, "%d [%ld] Sending message to %s.\n", CODE_COMMANDxSTART, 1103 tag, m_szId); 1064 1104 tags.push_back(tag); 1065 1105 } 1106 else 1107 { 1108 m_nEventPPID = m_nPPID; 1109 m_szEventId = strdup(m_szId); 1110 } 1066 1111 return fflush(fs); 1067 1112 } -
trunk/rms/src/rms.h
r4176 r4193 51 51 void ProcessServer(); 52 52 void ProcessLog(); 53 void AddEventTag(const char *, unsigned long, unsigned long); 53 54 54 55 friend class CRMSClient; … … 104 105 char m_szLine[MAX_LINE_LENGTH + 1]; 105 106 unsigned short m_nTextPos; 107 char *m_szEventId; 108 unsigned long m_nEventPPID; 106 109 107 110 int StateMachine(); … … 112 115 void ParseUser(const char *); 113 116 int ChangeStatus(unsigned long, unsigned long, const char *); 117 void AddEventTag(const char *, unsigned long, unsigned long); 114 118 115 119 int Process_MESSAGE_text();
