Beispiel #1
0
void ITransferObj::OnTransferRequest(ERequestSource eReqFrom, SapConnection_ptr ptrConn, const void *pBuffer, int nLen,const void*pExhead, int nExlen)
{
    SSapMsgHeader *pHead=(SSapMsgHeader *)pBuffer;
    unsigned int dwOldSeq=pHead->dwSequence;

    unsigned int dwNewSeq=m_seq++;
    pHead->dwSequence=dwNewSeq;
    
    SPeerSeqPtr & s=m_SocSeqPtr[dwNewSeq];
    s.dwSeq=dwOldSeq;
    s.ptrConn=ptrConn;
    s.dwServiceId = ntohl(pHead->dwServiceId);
    s.dwMsgId = ntohl(pHead->dwMsgId);
    s.eReqSource = eReqFrom;
    //s.pCSObj = NULL;
    s.sInfo = GetRequestInfo(pBuffer,nLen);
    s.strAddr = GetIpAddr(pBuffer,nLen,pExhead,nExlen);
    m_pManager->GetLogTrigger()->BeginTrigger(pBuffer,nLen,s.sLog);
    m_pManager->gettimeofday(&(s.tmReceived), false);
    s.ullTimeout = s.tmReceived.tv_sec * 1000LL + s.tmReceived.tv_usec / 1000;
    s.ullTimeout += ASC_TIMEOUT_INTERVAL * 1000;
    m_TimeList.insert(make_pair(s.ullTimeout, dwNewSeq));

    SS_XLOG(XLOG_DEBUG,"ITransferObj::%s, seq[%u],buffer[%x],nlen[%d], rquest from[%d], old seq[%d]\n",
        __FUNCTION__,dwNewSeq,pBuffer,nLen, eReqFrom, dwOldSeq);
    WriteData(pBuffer,nLen, pExhead, nExlen);
}
Beispiel #2
0
int ITransferObj::OnTransferAVSRequest(SapConnection_ptr ptrConn, const void *pBuffer, int nLen)
{
    SSapMsgHeader *pHead=(SSapMsgHeader *)pBuffer;
    unsigned int dwOldSeq=pHead->dwSequence;    

    unsigned int dwNewSeq=m_seq++;
    pHead->dwSequence=dwNewSeq;
    int nRet = WriteAvs(pBuffer,nLen);
    if (nRet == 0)
    {    
        SPeerSeqPtr & s=m_SocSeqPtr[dwNewSeq];    
        s.dwSeq=dwOldSeq;    
        s.dwServiceId = ntohl(pHead->dwServiceId);
        s.dwMsgId = ntohl(pHead->dwMsgId);
        s.eReqSource = SAP_Request_Remote;
        s.ptrConn = ptrConn;
        s.sInfo = GetRequestInfo(pBuffer,nLen);
        s.strAddr = GetIpAddr(pBuffer,nLen,NULL,0);
        m_pManager->gettimeofday(&(s.tmReceived), false);
        s.ullTimeout = s.tmReceived.tv_sec * 1000LL + s.tmReceived.tv_usec / 1000;
        s.ullTimeout += ASC_TIMEOUT_INTERVAL * 1000;        
        m_TimeList.insert(make_pair(s.ullTimeout, dwNewSeq));
        m_pManager->GetLogTrigger()->BeginTrigger(pBuffer,nLen,s.sLog);

        SS_XLOG(XLOG_DEBUG,"%s::%s, seq[%u], old seq[%d]\n",
            m_strModule.c_str(),__FUNCTION__,dwNewSeq, dwOldSeq);    
    }
    return nRet;
}
Beispiel #3
0
void ITransferObj::OnTransferMapQRequest(void *pExBuffer, int nExLen)
{
    SForwardMsg *pForwardMsg = (SForwardMsg*)pExBuffer;
    int nLen = nExLen - sizeof(SForwardMsg);
	SSapMsgHeader *pHead = (SSapMsgHeader *)(pForwardMsg->pBuffer);
	unsigned int dwOldSeq = pHead->dwSequence;
	unsigned int dwNewSeq = m_seq++;
	pHead->dwSequence=dwNewSeq;

	SPeerSeqPtr & s=m_SocSeqPtr[dwNewSeq];
	s.dwSeq=dwOldSeq;
	s.dwServiceId = ntohl(pHead->dwServiceId);
	s.dwMsgId = ntohl(pHead->dwMsgId);    
	s.eReqSource = SAP_Request_MapQ;
	//s.pCSObj = NULL;
	s.sAckInfo.bAckMsg = true;
	s.sAckInfo.pExBuffer = pExBuffer;
	s.sAckInfo.nExLen = nExLen;
    s.strAddr = GetIpAddr(pForwardMsg->pBuffer,nLen,NULL,0);
    s.sCompose.dwServiceId = pForwardMsg->dwComposeSrvId;
    s.sCompose.dwMsgId = pForwardMsg->dwComposeMsgId;
    //s.dwOriginalSeq  = pForwardMsg->dwOriginalSeq;
    s.sInfo = GetRequestInfo(pForwardMsg->pBuffer,nLen);

    m_pManager->gettimeofday(&(s.tmReceived), false);
    s.ullTimeout = s.tmReceived.tv_sec * 1000LL + s.tmReceived.tv_usec / 1000;
    s.ullTimeout += ASC_TIMEOUT_INTERVAL * 1000;
    m_TimeList.insert(make_pair(s.ullTimeout, dwNewSeq));

	SS_XLOG(XLOG_DEBUG,"%s::%s, seq[%u],buffer[%x],nlen[%d], rquest from[%d], old seq[%d]\n",
		m_strModule.c_str(),__FUNCTION__,dwNewSeq,pExBuffer,nExLen, SAP_Request_MapQ, dwOldSeq);

	//((CSessionManager *)m_pManager)->m_oReportData.dwRequest++;

	WriteData(pForwardMsg->pBuffer,nLen);
}
Beispiel #4
0
int	ProcFileRequest()
{
    int	SocketFD;
    int	len;
    unsigned char	*Data = NULL;
    FILE	*fp;
    char	FileName[SMALL_BUFF];
    char	TimeStamp[TIMESTAMP_SIZE];
    REQ_HEADER_T	InputHeader;
    RES_HEADER_T	OutputHeader;

    REQ_AGPSFILE_T	Query;

    memset(&InputHeader, 0, sizeof(REQ_HEADER_T));
    memset(&OutputHeader, 0, sizeof(RES_HEADER_T));
    memset(&Query, 0, sizeof(REQ_AGPSFILE_T));
    memset(&TimeStamp, 0, TIMESTAMP_SIZE);

    InputHeader.Version = VERSION_01;
    InputHeader.ServiceID = MSG_AGPSFILE_REQ;

    GetRequestInfo(&Query);

    if((SocketFD = connect_to_server(SERVER_IP, SERVER_PORT)) < 0)	{
        printf("Socket Connection Error.....\n");
        exit(-1);
    }

    InputHeader.Version = htonl(InputHeader.Version);
    InputHeader.ServiceID = htonl(InputHeader.ServiceID);

    if((len = writen(SocketFD, &InputHeader, sizeof(REQ_HEADER_T))) != sizeof(REQ_HEADER_T))	{
        printf("Write Error...\n");
        exit(-1);
    }
    Query.CompanyID = htonl(Query.CompanyID);
    Query.FileType = htonl(Query.FileType);
    writen(SocketFD, &Query, sizeof(REQ_AGPSFILE_T));
    Query.CompanyID = ntohl(Query.CompanyID);
    Query.FileType = ntohl(Query.FileType);
    readn(SocketFD, &OutputHeader, sizeof(RES_HEADER_T));

    OutputHeader.Version = ntohl(OutputHeader.Version);
    OutputHeader.ServiceID = ntohl(OutputHeader.ServiceID);
    OutputHeader.ErrorCode = ntohl(OutputHeader.ErrorCode);
    OutputHeader.Count = ntohl(OutputHeader.Count);

    printf("---------------------------------------------------------------\n");
    printf("Version(%d)ServiceID(%d)ErrorCode(%d)Count(%d)\n",
           OutputHeader.Version, OutputHeader.ServiceID, OutputHeader.ErrorCode, OutputHeader.Count);

    if(OutputHeader.Count > 0)	{
        if((Data = (unsigned char *) malloc(OutputHeader.Count+1+TIMESTAMP_SIZE)) == NULL)	{
            printf("Memory Allocation Error...(%d)\n", (OutputHeader.Count+TIMESTAMP_SIZE));
            exit(-1);
        }
        memset(Data, 0, (OutputHeader.Count+1+TIMESTAMP_SIZE));
        if((len = readn(SocketFD, Data, OutputHeader.Count+TIMESTAMP_SIZE)) != (OutputHeader.Count+TIMESTAMP_SIZE))	{
            printf("Read Error...(%d/%d)\n", len, (OutputHeader.Count+TIMESTAMP_SIZE));
            exit(-1);
        }

        memcpy(TimeStamp, Data, TIMESTAMP_SIZE);
        printf("TimeStamp(%s)\n", TimeStamp);
        sprintf(FileName, "./RESULT_%02d_%02d.DAT", Query.CompanyID, Query.FileType);
        if((fp = fopen(FileName, "wb")) == NULL)	{
            printf("File(%s) open Error..\n", FileName);
            exit(-1);
        }
        fwrite(Data+TIMESTAMP_SIZE, 1, OutputHeader.Count, fp);
        fclose(fp);
        free(Data);
    }
    close(SocketFD);
    return	1;
}