본문 바로가기
카테고리 없음

[XLOG/Buffering]

by 크크다스 2015. 10. 28.
반응형

= XLOG / BUFFERING


#define    RPC_BUF_LEN                        1048576 /* 1024*1024 */

#define    XLOG(_format, ...)    fprintf(stderr, "[%s:%s:%u] " _format "\n", __FILE__, __func__, __LINE__, __VA_ARGS__);

#define    RPC_BUF_START(_pc)    if(_pc) { \
    if(gRpcBufLen) { \
        XLOG("Invalid RPC_BUF_START:PC[%p=>%p]", gpProtoCtx, (_pc)); \
        gRpcBufLen = 0; \
    } \
    gpProtoCtx = (_pc); \
}

#define    RPC_BUF_END(_pc)    if(_pc) { \
    if(gRpcBufLen) { \
        gRpcBuf[gRpcBufLen] = 0x00; \
        proto_SendRaw((_pc), gRpcBuf, gRpcBufLen); \
        XLOG("Sent[%s]", gRpcBuf); \
    } \
    gRpcBufLen = 0; \
    gpProtoCtx = NULL; \
}
       
#define    RPC_BUF_ADD(_pc, _src, _src_len)    { \
    if((gRpcBufLen + (_src_len)) >= sizeof(gRpcBuf)) { \
        /* Buffer Full => Send */ \
        RPC_BUF_END((_pc)); \
        RPC_BUF_START((_pc)); \
    } \
    memcpy(&gRpcBuf[gRpcBufLen], (_src), (_src_len)); \
    gRpcBufLen += (_src_len); \
}

char gRpcBuf[RPC_BUF_LEN + 1];
unsigned int    gRpcBufLen = 0;
tProtoCtx*        gpProtoCtx = NULL;


반응형