file writer test

 

#include "stdafx.h"

#include <memory.h>

#include <bitset>

 

enum BIT_FLAG

{

BIT_RECTIME = 0,

BIT_SRC,

BIT_DST,

BIT_SENDTIME

};

 

typedef struct Recoder

{

SYSTEMTIME recTime;

unsigned __int32 SrcIP;

unsigned __int16 SrcPort;

unsigned __int32 DstIP;

unsigned __int16 DstPort;

SYSTEMTIME sendTime;

}Recoder;

 

const int BUFFER_LEN = 1024;

class TracyLog

{

public:

TracyLog()

{

memset( m_RecoderBuffer, 0, sizeof(m_RecoderBuffer) );

memset( m_LocalBuffer, 0, sizeof(m_LocalBuffer) );

memset( &m_Recorder, 0, sizeof(m_Recorder) );

}

 

~TracyLog()

{

}

 

void Reset()

{

m_iID = 0;

memset( m_RecoderBuffer, 0, sizeof(m_RecoderBuffer) );

memset( m_LocalBuffer, 0, sizeof(m_LocalBuffer) );

memset( &m_Recorder, 0, sizeof(m_Recorder) );

m_bitFlag.reset();

}

 

void SetReceiveTime()

{

m_bitFlag.set( BIT_RECTIME );

GetSystemTime( &m_Recorder.recTime );

}

void SetSendTime()

{

m_bitFlag.set( BIT_SENDTIME );

GetSystemTime( &m_Recorder.sendTime );

}

void SetID(int ID)

{

m_iID = ID;

}

void SetSource()

{

m_bitFlag.set(BIT_SRC);

m_Recorder.SrcIP = 20197125;

m_Recorder.SrcPort = 7780;

}

 

void SetDst()

{

m_bitFlag.set(BIT_DST);

m_Recorder.DstIP = 20019825;

m_Recorder.DstPort = 7777;

}

 

char* GetBuffer()

{

if( m_bitFlag.test( BIT_RECTIME ) )

{

sprintf_s( m_RecoderBuffer, BUFFER_LEN, "/r/n%04d%02d%02d,%02d%02d%02d:%06d",

m_Recorder.recTime.wYear, m_Recorder.recTime.wMonth, m_Recorder.recTime.wDay,

m_Recorder.recTime.wHour, m_Recorder.recTime.wMinute, m_Recorder.recTime.wSecond, m_Recorder.recTime.wMilliseconds );

}

else

{

sprintf_s( m_RecoderBuffer, BUFFER_LEN, "/r/n," );

}

 

if( m_bitFlag.test( BIT_SRC ) )

{

in_addr addr;

addr.S_un.S_addr = m_Recorder.SrcIP;

sprintf_s( m_LocalBuffer, BUFFER_LEN,",%s:%d", inet_ntoa( addr ), m_Recorder.SrcPort );

strcat( m_RecoderBuffer, m_LocalBuffer );

}

else

{

sprintf_s( m_LocalBuffer, BUFFER_LEN,"," );

strcat( m_RecoderBuffer, m_LocalBuffer );

}

 

if( m_bitFlag.test( BIT_DST ) )

{

in_addr addr;

addr.S_un.S_addr = m_Recorder.DstIP;

sprintf_s( m_LocalBuffer, BUFFER_LEN,",%s:%d", inet_ntoa( addr ), m_Recorder.DstPort );

strcat( m_RecoderBuffer, m_LocalBuffer );

}

else

{

sprintf_s( m_LocalBuffer, BUFFER_LEN,"," );

strcat( m_RecoderBuffer, m_LocalBuffer );

}

 

if( m_bitFlag.test( BIT_SENDTIME ) )

{

sprintf_s( m_LocalBuffer, BUFFER_LEN, ",%04d%02d%02d,%02d%02d%02d:%06d",

m_Recorder.sendTime.wYear, m_Recorder.sendTime.wMonth, m_Recorder.sendTime.wDay,

m_Recorder.sendTime.wHour, m_Recorder.sendTime.wMinute, m_Recorder.sendTime.wSecond, m_Recorder.sendTime.wMilliseconds );

strcat(  m_RecoderBuffer, m_LocalBuffer );

}

else

{

sprintf_s( m_LocalBuffer, BUFFER_LEN,",," );

strcat( m_RecoderBuffer, m_LocalBuffer );

}

 

sprintf_s( m_LocalBuffer, BUFFER_LEN,",%d", m_iID );

strcat( m_RecoderBuffer, m_LocalBuffer );

 

return m_RecoderBuffer;

}

 

private:

int m_iID;

char m_RecoderBuffer[BUFFER_LEN];

char m_LocalBuffer[BUFFER_LEN];

Recoder m_Recorder;

std::bitset< 20 > m_bitFlag; 

};

 

 

int _tmain(int argc, char* argv[])

{

FILE* LogFile = nullptr;

 

LogFile = fopen( "c://Hector//logFile.log", "wb" );

 

TracyLog LogIns;

 

for( int i = 0; i < 9000; ++i )

{

LogIns.Reset();

LogIns.SetID( i );

LogIns.SetReceiveTime();

LogIns.SetSource();

LogIns.SetDst();

if( 0 == i%5 )

{

in_addr addr;

addr.S_un.S_addr = 41598986;

inet_ntoa( in_addr(addr) );

}

LogIns.SetSendTime();

 

char* pBuffer = LogIns.GetBuffer();

size_t len = strlen( pBuffer );

fwrite( pBuffer, sizeof(unsigned char), len, LogFile );

}

fclose( LogFile );

 

return 0;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章