Exemplo n.º 1
0
int  MdApiImpl::ReqUserLogin(CThostFtdcReqUserLoginField *pReqUserLoginField, int nRequestID)
{
    static BYTE bLoginPkt[FTD_HDRLEN] = { FTDTypeFTDC,0,0,0xea,1,0,8,CHAIN_LAST,0,0,0,0,0x30,0,0,0,0,0,0,3,0,0xd4,0,0,0,0,0x10,2,0,0xbc};
    DWORD iLen = FTD_HDRLEN+sizeof(CThostFtdcReqUserLoginField)+sizeof(bMdQuick);
    m_bPktSend.resize(iLen);

    *(DWORD*)(bLoginPkt+0x16) = htonl(nRequestID);

    GetToday(pReqUserLoginField->TradingDay,9);
    //strcpy(pReqUserLoginField->BrokerID, m_sBkrId);
    if (!strlen(pReqUserLoginField->UserProductInfo))
    {
        StringCbCopyA(pReqUserLoginField->UserProductInfo,11,PROD_INFO);
    }
    if (!strlen(pReqUserLoginField->InterfaceProductInfo))
    {
        StringCbCopyA(pReqUserLoginField->InterfaceProductInfo,11,API_INFO);
    }
    if (!strlen(pReqUserLoginField->ProtocolInfo))
    {
        StringCbCopyA(pReqUserLoginField->ProtocolInfo,11,PROT_INFO);
    }

    StringCbCopyA(pReqUserLoginField->MacAddress,21,m_sMac);

    memcpy(&m_bPktSend[0],bLoginPkt,FTD_HDRLEN);
    memcpy(&m_bPktSend[FTD_HDRLEN],pReqUserLoginField,sizeof(CThostFtdcReqUserLoginField));
    memcpy(&m_bPktSend[FTD_HDRLEN+sizeof(CThostFtdcReqUserLoginField)],bMdQuick,sizeof(bMdQuick));

    return SendPkt(&m_bPktSend[0],iLen);
}
Exemplo n.º 2
0
int  MdApiImpl::UnSubscribeMarketData(char *ppInstrumentID[], int nCount)
{
    static BYTE bUnSubMdPkt[FTD_HDRLEN-4] = { FTDTypeFTDC,0,0,0x3d,1,0,8,CHAIN_LAST,0,0,0,0,0x44,3,0,0,0,0,0,1/*nCount*/,0,0x27,0,0,0,0/*,0x24,0x41,0,0x1f*/};

    int iOne = sizeof(TThostFtdcInstrumentIDType)+sizeof(bSubMdSign);
    DWORD iLen = FTD_HDRLEN-4+ nCount*iOne;
    m_bPktSend.resize(iLen);

    *(USHORT*)(bSubMdSign+2) = htons(sizeof(TThostFtdcInstrumentIDType));
    *(USHORT*)(bUnSubMdPkt+2) = htons(iLen-4);	//分包?????
    *(USHORT*)(bUnSubMdPkt+0x12) = htons(nCount);
    *(USHORT*)(bUnSubMdPkt+0x14) = htons(nCount*iOne);

    memcpy(&m_bPktSend[0],bUnSubMdPkt,FTD_HDRLEN-4);

    ONEPKT pkt;
    ZeroMemory(&pkt, sizeof(pkt));
    memcpy(pkt.bSign,bSubMdSign,4);

    for (int i=0; i<nCount; i++)
    {
        StringCbCopyA(pkt.sInst,sizeof(TThostFtdcInstrumentIDType),ppInstrumentID[i]);
        memcpy(&m_bPktSend[FTD_HDRLEN-4+iOne*i],&pkt,iOne);
    }

    return SendPkt(&m_bPktSend[0],iLen);
}
Exemplo n.º 3
0
bool CMOOSCommObject::SendMsg(XPCTcpSocket *pSocket,CMOOSMsg &Msg)
{
    MOOSMSG_LIST MsgList;
    
    MsgList.push_front(Msg);

    CMOOSCommPkt Pkt;

    Pkt.Serialize(MsgList,true);
	

    return SendPkt(pSocket,Pkt);
}
Exemplo n.º 4
0
void BaseConn::OnConfirm()
{
    m_open = true;
    
    if (!m_wait_pkt_list.empty()) {
        for (auto it = m_wait_pkt_list.begin(); it != m_wait_pkt_list.end(); ++it) {
            PktBase* pkt = *it;
            SendPkt(pkt);
            delete pkt;
        }
        
        m_wait_pkt_list.clear();
    }
}
Exemplo n.º 5
0
int MdApiImpl::SendHBeatPkt()
{
    return SendPkt(bHBeatPkt,6);
}
Exemplo n.º 6
0
int MdApiImpl::SendPrePkt()
{
    return SendPkt(bUnkPkt,10);
}
Exemplo n.º 7
0
void NbClientConn::HandlePkt(PktBase* pPkt)
{
    // continuous send packet to server when receive a packet
    PktHeartBeat hb_pkt;
    SendPkt(&hb_pkt);
}