72 lines
1.7 KiB
C++
72 lines
1.7 KiB
C++
#include "stdafx.h"
|
|
#include "AutoCleanup.h"
|
|
#include "file/MyFile.h"
|
|
#include "CommDataUtils.h"
|
|
|
|
MSGSERIALID CommDataUtils::SendMessageToClient( LPCTSTR clientid, const CommData& commData, BOOL bNeedReply )
|
|
{
|
|
ByteBuffer byteData;
|
|
commData.Serialize(byteData);
|
|
|
|
return SendMessage2Client(clientid, (LPBYTE)byteData, byteData.Size(), bNeedReply);
|
|
}
|
|
|
|
BOOL CommDataUtils::WaitForReply( LPCTSTR clientid, MSGSERIALID msgSerialID, CommData& replyData, DWORD dwWaitTimeoutS )
|
|
{
|
|
//µÈ´ý»ØÓ¦
|
|
DWORD dwSleepMS = 200;
|
|
BOOL bReplied = FALSE;
|
|
for (int i = 0; i < (int)(dwWaitTimeoutS * 1000 / dwSleepMS); i++)
|
|
{
|
|
Sleep(dwSleepMS);
|
|
|
|
ByteList replyByteList;
|
|
if (GetReplyByMsgserialid(clientid, msgSerialID, &replyByteList))
|
|
{
|
|
if (! replyData.Parse(replyByteList.GetPointer(), replyByteList.Count()))
|
|
{
|
|
errorLog(_T("get reply OK but parse failed[%s][%I64u]"), clientid, msgSerialID);
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL CommDataUtils::SendAndWaitForReply( LPCTSTR clientid, const CommData& request, CommData& reply, DWORD dwWaitTimeoutS )
|
|
{
|
|
MSGSERIALID msgserialID = SendMessageToClient(clientid, request, TRUE);
|
|
if (INVALID_MSGSERIALID == msgserialID)
|
|
{
|
|
errorLog(_T("send message to client failed. [%s]"), clientid);
|
|
return FALSE;
|
|
}
|
|
|
|
return WaitForReply(clientid, msgserialID, reply, dwWaitTimeoutS);
|
|
}
|
|
|
|
BOOL CommDataUtils::ReadDataFile( LPCTSTR datafilepath, CommData& data )
|
|
{
|
|
MyFile file;
|
|
if (! file.Open(datafilepath, GENERIC_READ, OPEN_EXISTING, FILE_SHARE_READ))
|
|
{
|
|
errorLog(_T("open file [%s] failed"), datafilepath);
|
|
return FALSE;
|
|
}
|
|
|
|
ByteBuffer content;
|
|
if (! file.ReadAll(content))
|
|
{
|
|
errorLog(_T("readall [%s] failed"), datafilepath);
|
|
return FALSE;
|
|
}
|
|
|
|
data.SetByteData(content, content.Size());
|
|
|
|
return TRUE;
|
|
|
|
}
|