int XMsgProcesser::EncodeSndMsg(std::string& outstr, const std::string& userid, const std::string& pass, const std::string& roomid, const std::string& to, const std::string& msg, int cmd, int action, int tags, int type) { SIGNALMSG s_msg; MEETMSG m_msg; m_msg._mtype = MSGTYPE::meeting; m_msg._cmd = cmd; m_msg._action = action; m_msg._tags = tags; m_msg._type = type; m_msg._mseq = GenericTransSeq(); m_msg._from = userid; m_msg._room = roomid; m_msg._sess = ""; m_msg._to = to; m_msg._cont = msg; m_msg._pass = pass; m_msg._code = 0; m_msg._status = ""; m_msg._nmem = 0; m_msg._ntime = 0; s_msg._stype = SIGNALTYPE::reqsndmsg; s_msg._scont = m_msg.ToJson(); outstr = s_msg.ToJson(); return 0; }
int XMsgProcesser::EncodeGetMsg(std::string& outstr, const std::string& userid, const std::string& pass) { SIGNALMSG s_msg; MEETMSG m_msg; m_msg._mtype = MSGTYPE::meeting; m_msg._cmd = 0; m_msg._action = 0; m_msg._tags = 0; m_msg._type = 0; m_msg._mseq = GenericTransSeq(); m_msg._from = userid; m_msg._room = ""; m_msg._sess = ""; m_msg._to = ""; m_msg._cont = ""; m_msg._pass = pass; m_msg._code = 0; m_msg._status = ""; m_msg._nmem = 0; m_msg._ntime = 0; s_msg._stype = SIGNALTYPE::reqgetmsg; s_msg._scont = m_msg.ToJson(); outstr = s_msg.ToJson(); return 0; }
int XMsgProcesser::EncodeGetMsg(std::string& outstr, const std::string& userid, const std::string& pass, int cmd) { SIGNALMSG s_msg; MEETMSG m_msg; m_msg._mtype = MSGTYPE::meeting; m_msg._messagetype = MESSAGETYPE::request; m_msg._signaltype = SIGNALTYPE::getmsg; m_msg._cmd = MEETCMD::meetcmd_invalid; m_msg._action = DCOMMACTION::dcommaction_invalid; m_msg._tags = SENDTAGS::sendtags_invalid; m_msg._type = SENDTYPE::sendtype_invalid; m_msg._mseq = GenericTransSeq(); m_msg._from = userid; m_msg._room = ""; m_msg._to = ""; m_msg._cont = ""; m_msg._pass = pass; m_msg._code = 0; m_msg._nname = ""; m_msg._rname = ""; m_msg._nmem = 0; m_msg._ntime = 0; s_msg._stype = SIGNALTYPE::getmsg; s_msg._scont = m_msg.ToJson(); outstr = s_msg.ToJson(); return 0; }
void RTConnectionTcp::OnSndMsg(MSGTYPE mType, long long mseq, const char* pUserid, const char* pData, int dLen) { if (!pData) { LE("%s invalid params\n", __FUNCTION__); std::string resp; GenericResponse(SIGNALTYPE::reqsndmsg, mType, mseq, RTCommCode::_invparams, GetRTCommStatus(RTCommCode::_invparams), resp); SendResponse(0, resp.c_str()); return; } //no matter mType is meet or callcenter or p2p or others //the following code should be same //find an TrasnferSession By mtype //transfer msg by TransferSession TRANSFERMSG t_trmsg; TRANSMSG t_msg; t_msg._flag = 0; t_msg._touser = ""; t_msg._connector = RTConnectionManager::Instance()->ConnectorId(); t_msg._content = pData; t_trmsg._action = TRANSFERACTION::req; t_trmsg._fmodule = TRANSFERMODULE::mconnector; t_trmsg._type = TRANSFERTYPE::trans; t_trmsg._trans_seq = GenericTransSeq(); t_trmsg._trans_seq_ack = 0; t_trmsg._valid = 1; t_trmsg._content = t_msg.ToJson(); const std::string s = t_trmsg.ToJson(); RTConnectionManager::ModuleInfo* pmi = RTConnectionManager::Instance()->findModuleInfo(pUserid, (TRANSFERMODULE)mType); if (pmi && pmi->pModule) { pmi->pModule->SendTransferData(s.c_str(), (int)s.length()); } else { LE("pmi->pModule is NULL\n"); std::string resp; GenericResponse(SIGNALTYPE::reqsndmsg, mType, mseq, RTCommCode::_errmoduinfo, GetRTCommStatus(RTCommCode::_errmoduinfo), resp); SendResponse(0, resp.c_str()); return; } { std::string resp; GenericResponse(SIGNALTYPE::reqsndmsg, mType, mseq, RTCommCode::_ok, GetRTCommStatus(RTCommCode::_ok), resp); SendResponse(0, resp.c_str()); return; } }
void CRTTransferSession::TransferMsg(const std::string& msg) { TRANSFERMSG t_trmsg; TRANSMSG t_msg; t_msg._flag = 0; t_msg._touser = ""; t_msg._connector = CRTConnManager::Instance().ConnectorId(); t_msg._content = msg; t_trmsg._action = TRANSFERACTION::req; t_trmsg._fmodule = TRANSFERMODULE::mconnector; t_trmsg._type = TRANSFERTYPE::trans; t_trmsg._trans_seq = GenericTransSeq(); t_trmsg._trans_seq_ack = 0; t_trmsg._valid = 1; t_trmsg._content = t_msg.ToJson(); const std::string s = t_trmsg.ToJson(); SendTransferData(s.c_str(), (int)s.length()); }
void DRTTransferSession::KeepAlive() { TRANSFERMSG t_msg; CONNMSG c_msg; t_msg._action = TRANSFERACTION::req; t_msg._fmodule = TRANSFERMODULE::mmsgqueue; t_msg._type = TRANSFERTYPE::conn; t_msg._trans_seq = GenericTransSeq(); t_msg._trans_seq_ack = 0; t_msg._valid = 1; c_msg._tag = CONNTAG::co_keepalive; c_msg._msg = "1"; c_msg._id = ""; c_msg._msgid = ""; c_msg._moduleid = ""; t_msg._content = c_msg.ToJson(); std::string s = t_msg.ToJson(); SendTransferData(s.c_str(), (int)s.length()); }
void CRTTransferSession::EstablishConnection() { TRANSFERMSG t_msg; CONNMSG c_msg; t_msg._action = TRANSFERACTION::req; t_msg._fmodule = TRANSFERMODULE::mconnector; t_msg._type = TRANSFERTYPE::conn; t_msg._trans_seq = GenericTransSeq(); t_msg._trans_seq_ack = 0; t_msg._valid = 1; c_msg._tag = CONNTAG::co_msg; c_msg._msg = "hello"; c_msg._id = ""; c_msg._msgid = ""; c_msg._moduleid = ""; t_msg._content = c_msg.ToJson(); std::string s = t_msg.ToJson(); SendTransferData(s.c_str(), (int)s.length()); }
void CRTConnection::OnSndMsg(const char* pUserid, int mType, const char* pData, int dLen) { if (!pData) { LE("%s invalid params\n", __FUNCTION__); SendResponse(HPS_BAD_REQUEST, ""); return; } //no matter mType is meet or callcenter or p2p or others //the following code should be same //find an TrasnferSession By mtype //transfer msg by TransferSession TRANSFERMSG t_trmsg; TRANSMSG t_msg; t_msg._flag = 0; t_msg._touser = ""; t_msg._connector = CRTConnManager::Instance().ConnectorId(); t_msg._content = pData; t_trmsg._action = TRANSFERACTION::req; t_trmsg._fmodule = TRANSFERMODULE::mconnector; t_trmsg._type = TRANSFERTYPE::trans; t_trmsg._trans_seq = GenericTransSeq(); t_trmsg._trans_seq_ack = 0; t_trmsg._valid = 1; t_trmsg._content = t_msg.ToJson(); const std::string s = t_trmsg.ToJson(); CRTConnManager::ModuleInfo* pmi = CRTConnManager::Instance().findModuleInfo(pUserid, (TRANSFERMODULE)mType); if (pmi && pmi->pModule) { pmi->pModule->SendTransferData(s.c_str(), (int)s.length()); } else { LE("pmi->pModule is NULL\n"); } SendResponse(HPS_OK, ""); }
void CRTTransferSession::OnTypeConn(TRANSFERMODULE fmodule, const std::string& str) { CONNMSG c_msg; std::string err; c_msg.GetMsg(str, err); if (err.length()>0) { LE("CRTTransferSession::OnTypeConn GetMsg err:%s\n", err.c_str()); return; } if ((c_msg._tag == CONNTAG::co_msg) && c_msg._msg.compare("hello") == 0) { // when other connect to ME: // generate TransferSessionId // send self ModuleId and TransferSessionId to other TRANSFERMSG t_msg; std::string trid; GenericSessionId(trid); m_transferSessId = trid; t_msg._action = TRANSFERACTION::req; //this is for transfer t_msg._fmodule = TRANSFERMODULE::mconnector; t_msg._type = TRANSFERTYPE::conn; t_msg._trans_seq = GenericTransSeq(); t_msg._trans_seq_ack = 0; t_msg._valid = 1; c_msg._tag = CONNTAG::co_id; c_msg._id = trid; //send self connector to other c_msg._moduleid = CRTConnManager::Instance().ConnectorId(); t_msg._content = c_msg.ToJson(); std::string s = t_msg.ToJson(); SendTransferData(s.c_str(), (int)s.length()); } else if ((c_msg._tag == CONNTAG::co_msgid) && c_msg._msgid.compare("ok") == 0) { // when other connect to ME: //get other's TransferSessionId and ModuleId if (m_transferSessId.compare(c_msg._id)==0) { CRTConnManager::ModuleInfo* pmi = new CRTConnManager::ModuleInfo(); if (pmi) { pmi->flag = 1; //store other's module type pmi->othModuleType = fmodule; pmi->othModuleId = m_transferSessId; pmi->pModule = this; //bind session and transfer id CRTConnManager::Instance().AddModuleInfo(pmi, m_transferSessId); //store which moudle connect to this connector //c_msg._moduleid: store other's module id CRTConnManager::Instance().AddTypeModuleSession(fmodule, c_msg._moduleid, m_transferSessId); LI("store the other's module fmodule:%d, id:%s, transfersessid:%s\n", (int)fmodule, c_msg._moduleid.c_str(), c_msg._id.c_str()); } else { LE("new ModuleInfo error!!!\n"); } } } else if (c_msg._tag == CONNTAG::co_keepalive) { this->RTTcp::UpdateTimer(); } else { LE("%s invalid msg tag\n", __FUNCTION__); } }