1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-28 14:13:37 +00:00

Added ILibChain_ReadAndSaveStateEx()

Updated Windows IPC Socket, so client connection uses ReadAndSaveState, to start in paused state.
This commit is contained in:
Bryan Roe
2020-05-29 00:02:59 -07:00
parent 69c29eee81
commit 9e6387599a
3 changed files with 27 additions and 0 deletions

View File

@@ -3346,6 +3346,27 @@ void* ILibChain_WaitHandle_RemoveAndSaveState(void *chain, HANDLE h)
}
return(ret);
}
void* ILibChain_ReadAndSaveStateEx(void *chain, HANDLE h, OVERLAPPED *p, char *buffer, int bufferLen, ILibChain_ReadEx_Handler handler, void *user, char *metadata)
{
int metaDataLen = (int)(metadata == NULL ? 0 : strnlen_s(metadata, 1024));
ILibChain_WaitHandleInfo *ret = (ILibChain_WaitHandleInfo*)ILibMemory_SmartAllocate(8 + metaDataLen + sizeof(ILibChain_WaitHandleInfo));
ILibChain_ReadEx_data *state = (ILibChain_ReadEx_data*)ILibMemory_SmartAllocate(sizeof(ILibChain_ReadEx_data));
BOOL r = ReadFile(h, buffer, bufferLen, NULL, p);
int e = GetLastError();
state->buffer = buffer;
state->p = p;
state->handler = handler;
state->fileHandle = h;
state->user = user;
ret->node = p->hEvent;
ret->user = state;
ret->handler = ILibChain_ReadEx_Sink;
sprintf_s(ret->metaData, metaDataLen + 8, "%s [READ]", metadata == NULL ? "" : metadata);
return(ret);
}
void ILibChain_WaitHandle_RestoreState(void *chain, void *state)
{
ILibChain_WaitHandleInfo *info = (ILibChain_WaitHandleInfo*)state;