Changeset 4193 for trunk/rms

Show
Ignore:
Timestamp:
08/23/05 16:57:02 (3 years ago)
Author:
phatfil
Message:

fix event tag handling.

Location:
trunk/rms/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/rms/src/rms.cpp

    r4176 r4193  
    180180 
    181181  // 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); 
    183183  licqDaemon = _licqDaemon; 
    184184   
     
    397397    } 
    398398  case SIGNAL_UPDATExLIST: 
     399    break; 
    399400  case SIGNAL_LOGON: 
     401    break; 
     402  case SIGNAL_EVENTxID: 
     403    AddEventTag(s->Id(), s->PPID(), s->Argument()); 
     404    break; 
    400405  default: 
    401406    break; 
    402407     
    403   case SIGNAL_EVENTxID: 
    404     //XXX Catch this 
    405     break; 
    406408  } 
    407409  delete s; 
    408410} 
    409411 
     412/*--------------------------------------------------------------------------- 
     413 * CLicqRMS::AddEventTag 
     414 *-------------------------------------------------------------------------*/ 
     415void 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} 
    410423 
    411424/*--------------------------------------------------------------------------- 
     
    461474  data_line_pos = 0; 
    462475  m_bNotify = false; 
     476  m_szEventId = 0; 
     477  m_nEventPPID = 0; 
    463478} 
    464479 
     
    473488  if (m_szCheckId) 
    474489    free(m_szCheckId); 
     490} 
     491 
     492/*--------------------------------------------------------------------------- 
     493 * CRMSClient::AddEventTag 
     494 *-------------------------------------------------------------------------*/ 
     495void 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  } 
    475507} 
    476508 
     
    10381070int CRMSClient::Process_MESSAGE() 
    10391071{ 
     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  } 
    10401079  fprintf(fs, "%d Enter message, terminate with a . on a line by itself:\n", 
    10411080     CODE_ENTERxTEXT); 
     
    10571096    false, ICQ_TCPxMSG_NORMAL); 
    10581097 
    1059   fprintf(fs, "%d [%ld] Sending message to %s.\n", CODE_COMMANDxSTART, 
    1060      tag, m_szId); 
    10611098  m_nState = STATE_COMMAND; 
    10621099 
    10631100  if (m_nPPID == LICQ_PPID) 
     1101  { 
     1102    fprintf(fs, "%d [%ld] Sending message to %s.\n", CODE_COMMANDxSTART, 
     1103       tag, m_szId); 
    10641104    tags.push_back(tag); 
    1065      
     1105  } 
     1106  else 
     1107  { 
     1108    m_nEventPPID = m_nPPID; 
     1109    m_szEventId = strdup(m_szId); 
     1110  } 
    10661111  return fflush(fs); 
    10671112} 
  • trunk/rms/src/rms.h

    r4176 r4193  
    5151  void ProcessServer(); 
    5252  void ProcessLog(); 
     53  void AddEventTag(const char *, unsigned long, unsigned long); 
    5354 
    5455friend class CRMSClient; 
     
    104105  char m_szLine[MAX_LINE_LENGTH + 1]; 
    105106  unsigned short m_nTextPos; 
     107  char *m_szEventId; 
     108  unsigned long m_nEventPPID; 
    106109 
    107110  int StateMachine(); 
     
    112115  void ParseUser(const char *); 
    113116  int ChangeStatus(unsigned long, unsigned long, const char *); 
     117  void AddEventTag(const char *, unsigned long, unsigned long); 
    114118   
    115119  int Process_MESSAGE_text();