1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2026-02-19 19:03:31 +00:00

1. Updated self-update logging to include current commit hash value

2. Updated child_process.waitExit() to throw an exception on empty set condition
3. Updated ILibChain_Continue() to exit while() loop on empty set
4. Updated agent-installer to better handle error conditions for updatervalue and meshservicename
This commit is contained in:
Bryan Roe
2021-01-13 11:13:37 -08:00
parent 6700428511
commit 78507ed66e
6 changed files with 164 additions and 94 deletions

View File

@@ -2322,11 +2322,12 @@ ILibChain_ContinuationStates ILibChain_GetContinuationState(void *chain)
return(((ILibBaseChain*)chain)->continuationState);
}
#ifdef WIN32
ILibExportMethod void ILibChain_Continue(void *Chain, ILibChain_Link **modules, int moduleCount, int maxTimeout, HANDLE **handles)
ILibExportMethod ILibChain_Continue_Result ILibChain_Continue(void *Chain, ILibChain_Link **modules, int moduleCount, int maxTimeout, HANDLE **handles)
#else
ILibExportMethod void ILibChain_Continue(void *Chain, ILibChain_Link **modules, int moduleCount, int maxTimeout)
ILibExportMethod ILibChain_Continue_Result ILibChain_Continue(void *Chain, ILibChain_Link **modules, int moduleCount, int maxTimeout)
#endif
{
ILibChain_Continue_Result ret = ILibChain_Continue_Result_EXIT;
ILibBaseChain *chain = (ILibBaseChain*)Chain;
ILibChain_Link_Hook *nodeHook;
ILibBaseChain *root = (ILibBaseChain*)chain;
@@ -2341,7 +2342,7 @@ ILibExportMethod void ILibChain_Continue(void *Chain, ILibChain_Link **modules,
ILibLinkedListNode tmpNode;
memset(&tmpNode, 0, sizeof(tmpNode));
if (root->continuationState != ILibChain_ContinuationState_INACTIVE && root->continuationState != ILibChain_ContinuationState_END_CONTINUE) { return; }
if (root->continuationState != ILibChain_ContinuationState_INACTIVE && root->continuationState != ILibChain_ContinuationState_END_CONTINUE) { return(ILibChain_Continue_Result_ERROR_INVALID_STATE); }
root->continuationState = ILibChain_ContinuationState_CONTINUE;
currentNode = root->node;
@@ -2361,6 +2362,7 @@ ILibExportMethod void ILibChain_Continue(void *Chain, ILibChain_Link **modules,
if (tv.tv_sec > (startTime.tv_sec + maxTimeout / 1000))
{
root->continuationState = ILibChain_ContinuationState_END_CONTINUE;
ret = ILibChain_Continue_Result_TIMEOUT;
break;
}
}
@@ -2368,7 +2370,7 @@ ILibExportMethod void ILibChain_Continue(void *Chain, ILibChain_Link **modules,
FD_ZERO(&readset);
FD_ZERO(&errorset);
FD_ZERO(&writeset);
tv.tv_sec = maxTimeout < 0 ? UPNP_MAX_WAIT : maxTimeout/1000;
tv.tv_sec = maxTimeout < 0 ? UPNP_MAX_WAIT : maxTimeout / 1000;
tv.tv_usec = 0;
//
@@ -2395,9 +2397,9 @@ ILibExportMethod void ILibChain_Continue(void *Chain, ILibChain_Link **modules,
//_CrtCheckMemory();
#endif
#endif
}
++mX;
}
++mX;
}
tv.tv_sec = chain->selectTimeout / 1000;
tv.tv_usec = 1000 * (chain->selectTimeout % 1000);
@@ -2432,7 +2434,15 @@ ILibExportMethod void ILibChain_Continue(void *Chain, ILibChain_Link **modules,
chain->currentWaitTimeout = 0;
ILibChain_SetupWindowsWaitObject(chain->WaitHandles, &x, &tv, &(chain->currentWaitTimeout), &readset, &writeset, &errorset, chain->auxSelectHandles, handles);
slct = ILibChain_WindowsSelect(chain, &readset, &writeset, &errorset, chain->WaitHandles, x, chain->currentWaitTimeout);
if (x == 0)
{
ret = ILibChain_Continue_Result_ERROR_EMPTY_SET;
slct = -1;
}
else
{
slct = ILibChain_WindowsSelect(chain, &readset, &writeset, &errorset, chain->WaitHandles, x, chain->currentWaitTimeout);
}
#else
slct = select(FD_SETSIZE, &readset, &writeset, &errorset, &tv);
#endif
@@ -2501,6 +2511,7 @@ ILibExportMethod void ILibChain_Continue(void *Chain, ILibChain_Link **modules,
root->currentHandle = currentHandle;
root->currentInfo = currentInfo;
#endif
return(root->TerminateFlag != 0 ? ILibChain_Continue_Result_ERROR_CHAIN_EXITING : ret);
}
ILibExportMethod void ILibChain_EndContinue(void *chain)

View File

@@ -389,6 +389,14 @@ int ILibIsRunningOnChainThread(void* chain);
ILibChain_ContinuationState_CONTINUE = 1,
ILibChain_ContinuationState_END_CONTINUE = 2
}ILibChain_ContinuationStates;
typedef enum ILibChain_Continue_Result
{
ILibChain_Continue_Result_EXIT = 0,
ILibChain_Continue_Result_TIMEOUT = 1,
ILibChain_Continue_Result_ERROR_INVALID_STATE = 10,
ILibChain_Continue_Result_ERROR_CHAIN_EXITING = 11,
ILibChain_Continue_Result_ERROR_EMPTY_SET = 12,
}ILibChain_Continue_Result;
typedef void(*ILibChain_PreSelect)(void* object, fd_set *readset, fd_set *writeset, fd_set *errorset, int* blocktime);
typedef void(*ILibChain_PostSelect)(void* object, int slct, fd_set *readset, fd_set *writeset, fd_set *errorset);
@@ -1104,9 +1112,9 @@ int ILibIsRunningOnChainThread(void* chain);
ILibExportMethod void ILibStartChain(void *chain);
ILibExportMethod void ILibStopChain(void *chain);
#ifdef WIN32
ILibExportMethod void ILibChain_Continue(void *chain, ILibChain_Link **modules, int moduleCount, int maxTimeout, HANDLE **handles);
ILibExportMethod ILibChain_Continue_Result ILibChain_Continue(void *chain, ILibChain_Link **modules, int moduleCount, int maxTimeout, HANDLE **handles);
#else
ILibExportMethod void ILibChain_Continue(void *chain, ILibChain_Link **modules, int moduleCount, int maxTimeout);
ILibExportMethod ILibChain_Continue_Result ILibChain_Continue(void *chain, ILibChain_Link **modules, int moduleCount, int maxTimeout);
#endif
ILibExportMethod void ILibChain_EndContinue(void *chain);
ILibChain_ContinuationStates ILibChain_GetContinuationState(void *chain);