Ejemplo n.º 1
0
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);
}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
0
	FORCEINLINE OnTransfer Transfer()
	{
		return OnTransfer(*this);
	}
Ejemplo n.º 6
0
 inline OnTransfer Transfer()
 {
     return OnTransfer(*this);
 }