00001
00002
00003
00004
00005
00006
00007
00008 #include "Comm/MessageClient.h"
00009
00010
00011
00012 int MessageClient::Register(MessageServer *pServer)
00013 {
00014 if (m_pServer != NULL)
00015 {
00016 ACE_ERROR_RETURN((LM_ERROR,
00017 "(%N:%l) Attempt register a message client twice.\n"),
00018 -1);
00019 }
00020
00021 int retVal = pServer->RegisterClient(m_id, this);
00022
00023 return retVal;
00024 }
00025
00026
00027
00028 int MessageClient::Deregister()
00029 {
00030 if (m_pServer == NULL)
00031 return -1;
00032
00033 int retVal = m_pServer->RemoveClient(m_id, this);
00034
00035 return retVal;
00036 }
00037
00038
00039
00040
00041
00042 MultiMessageClient::MultiMessageClient(u_int *id, u_int numIDs)
00043 : m_numChildren(numIDs)
00044 {
00045 m_ppChildren = new MC *[m_numChildren];
00046
00047 for (u_int i = 0; i < m_numChildren; ++i)
00048 {
00049 m_ppChildren[i] = new MC(id[i], this);
00050 }
00051 }
00052
00053
00054
00055 MultiMessageClient::~MultiMessageClient()
00056 {
00057 for (u_int i = 0; i < m_numChildren; ++i)
00058 {
00059 delete m_ppChildren[i];
00060 }
00061
00062 delete [] m_ppChildren;
00063 }
00064
00065
00066
00067
00068
00069
00070 int MultiMessageClient::SendMessage(u_int originator, const void *msg, size_t len, u_int dest)
00071 {
00072 for (u_int i = 0; i < m_numChildren; ++i)
00073 {
00074 if (m_ppChildren[i]->id() == originator)
00075 {
00076 return m_ppChildren[i]->SendMessage(msg, len, dest);
00077 }
00078 }
00079
00080 ACE_ERROR_RETURN((LM_ERROR,
00081 "(%N:%l) Attempt to send a message with ID for which the client"
00082 " is not registered.\n"),
00083 -1);
00084 }
00085
00086
00087
00088
00089 int MultiMessageClient::Register(MessageServer *pServer)
00090 {
00091 int retVal = 0;
00092
00093 for (u_int i = 0; i < m_numChildren; ++i)
00094 {
00095 if (m_ppChildren[i]->Register(pServer) == -1)
00096 {
00097 retVal = -1;
00098 }
00099 }
00100
00101 return -1;
00102 }
00103
00104
00105
00106
00107 int MultiMessageClient::Deregister()
00108 {
00109 int retVal = 0;
00110
00111 for (u_int i = 0; i < m_numChildren; ++i)
00112 {
00113 if (m_ppChildren[i]->Deregister() == -1)
00114 {
00115 retVal = -1;
00116 }
00117 }
00118
00119 return -1;
00120 }
00121