void CCoupleHelper::Handler( LPDB_OVERLAPPED_PLUS pov, DWORD dwCompletionKey ) { CAr ar( pov->lpBuf, pov->uBufSize ); switch( pov->nQueryMode ) { case eTransfer: OnTransfer( dwCompletionKey ); break; case ePropose: OnPropose( ar, dwCompletionKey ); break; case eCouple: OnCouple( ar ); break; case eDecouple: OnDecouple( ar ); break; case eClearPropose: OnClearPropose(); break; #if __VER >= 13 // __COUPLE_1202 case eAddExperience: OnAddExperience( ar ); break; #endif // __COUPLE_1202 default: break; } }
void MRTTransferSession::OnMsgAck(pms::TransferMsg& tmsg) { #if DEF_PROTO pms::TransferMsg ack_msg; ack_msg.set_type(tmsg.type()); ack_msg.set_flag(pms::ETransferFlag::FACK); ack_msg.set_priority(tmsg.priority()); OnTransfer(ack_msg.SerializeAsString()); #else LE("not define DEF_PROTO\n") #endif }
void CRTTransferSession::OnMsgAck(TRANSFERMSG& tmsg) { TRANSFERMSG ack_msg; if (tmsg._action == TRANSFERACTION::req) { ack_msg._action = TRANSFERACTION::req_ack; } else { ack_msg._action = TRANSFERACTION::resp_ack; } ack_msg._fmodule = TRANSFERMODULE::mconnector; ack_msg._type = tmsg._type; ack_msg._trans_seq = tmsg._trans_seq; ack_msg._trans_seq_ack = tmsg._trans_seq + 1; ack_msg._valid = tmsg._valid; ack_msg._content = ""; const std::string s = ack_msg.ToJson(); OnTransfer(s); }
int RTTransfer::DoProcessData(const char *pData, int nLen) { if (nLen==0) { return 0; } memset((void*)&m_msg, 0, sizeof(TRANSFERMSG)); std::string str(pData, nLen), err; m_msg.GetMsg(str, err); if (err.length() > 0) { LE("%s err:%s\n", __FUNCTION__, err.c_str()); if (err.compare(INVALID_JSON_PARAMS)==0) { // Here means the msg not received totally return -1; } else { // Here means the msg error return nLen; } } { if (m_msg._action == TRANSFERACTION::req) { TRANSFERMSG ack_msg; ack_msg._action = TRANSFERACTION::req_ack; ack_msg._fmodule = TRANSFERMODULE::mconnector; ack_msg._type = m_msg._type; ack_msg._trans_seq = m_msg._trans_seq; ack_msg._trans_seq_ack = m_msg._trans_seq + 1; ack_msg._valid = m_msg._valid; ack_msg._content = ""; const std::string s = ack_msg.ToJson(); OnTransfer(s); } else if (m_msg._action == TRANSFERACTION::req_ack) { if (m_msg._trans_seq + 1 == m_msg._trans_seq_ack) { // ack ok return nLen; } else { // ack failer LE("msg ack failed, seq:%d, seq_ack:%d\n",m_msg._trans_seq, m_msg._trans_seq_ack); return nLen; } } else if (m_msg._action == TRANSFERACTION::resp) { TRANSFERMSG ack_msg; ack_msg._action = TRANSFERACTION::resp_ack; ack_msg._fmodule = TRANSFERMODULE::mconnector; ack_msg._type = m_msg._type; ack_msg._trans_seq = m_msg._trans_seq; ack_msg._trans_seq_ack = m_msg._trans_seq + 1; ack_msg._valid = m_msg._valid; ack_msg._content = ""; const std::string s = ack_msg.ToJson(); OnTransfer(s); } else if (m_msg._action == TRANSFERACTION::resp_ack) { if (m_msg._trans_seq + 1 == m_msg._trans_seq_ack) { // ack ok return nLen; } else { // ack failer LE("msg ack failed, seq:%d, seq_ack:%d\n",m_msg._trans_seq, m_msg._trans_seq_ack); return nLen; } } else { LE("msg action error!!!!!\n"); } } { if (m_msg._type == TRANSFERTYPE::conn) { OnTypeConn(m_msg._fmodule, m_msg._content); } else if (m_msg._type == TRANSFERTYPE::trans) { OnTypeTrans(m_msg._fmodule, m_msg._content); } else if (m_msg._type == TRANSFERTYPE::queue) { OnTypeQueue(m_msg._fmodule, m_msg._content); } else if (m_msg._type == TRANSFERTYPE::dispatch) { OnTypeDispatch(m_msg._fmodule, m_msg._content); } else if (m_msg._type == TRANSFERTYPE::push) { OnTypePush(m_msg._fmodule, m_msg._content); } else { LE("invalid type::%d", m_msg._type); } } return nLen; }
FORCEINLINE OnTransfer Transfer() { return OnTransfer(*this); }
inline OnTransfer Transfer() { return OnTransfer(*this); }