Change NetworkTest to exit after disconnect
This commit is contained in:
parent
6597b552a7
commit
0ff6bd13a7
1 changed files with 21 additions and 6 deletions
|
@ -5,6 +5,12 @@
|
|||
|
||||
#include <UDPConnection.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int isConnected;
|
||||
int hasConnectedOnce;
|
||||
} TestContext;
|
||||
|
||||
void printUsage()
|
||||
{
|
||||
printf("Usage: [-c] -a <addr> -p <target_port> -l <listen_port>\n");
|
||||
|
@ -12,12 +18,17 @@ void printUsage()
|
|||
|
||||
void conCallback(void *userdata, uint32_t addr)
|
||||
{
|
||||
*((int*)userdata) = 1;
|
||||
TestContext *ctx = userdata;
|
||||
ctx->isConnected = 1;
|
||||
ctx->hasConnectedOnce = 1;
|
||||
printf("Connected callback called\n");
|
||||
}
|
||||
|
||||
void discCallback(void *userdata, uint32_t addr)
|
||||
{
|
||||
*((int*)userdata) = 0;
|
||||
TestContext *ctx = userdata;
|
||||
ctx->isConnected = 0;
|
||||
printf("Disconnected callback called\n");
|
||||
}
|
||||
|
||||
void recCallback(void *userdata, char *data, uint32_t size)
|
||||
|
@ -30,7 +41,7 @@ int main(int argc, char** argv)
|
|||
uint32_t targetAddress = 0;
|
||||
uint16_t targetPort = 0;
|
||||
uint16_t listenPort = 0;
|
||||
int isConnected = 0;
|
||||
TestContext testCtx = {0, 0};
|
||||
|
||||
--argc; ++argv;
|
||||
while(argc > 0)
|
||||
|
@ -73,18 +84,22 @@ int main(int argc, char** argv)
|
|||
if(UDPC_get_error(ctx) == UDPC_SUCCESS)
|
||||
{
|
||||
UDPC_set_logging_type(ctx, 4);
|
||||
UDPC_set_callback_connected(ctx, conCallback, &isConnected);
|
||||
UDPC_set_callback_disconnected(ctx, discCallback, &isConnected);
|
||||
UDPC_set_callback_connected(ctx, conCallback, &testCtx);
|
||||
UDPC_set_callback_disconnected(ctx, discCallback, &testCtx);
|
||||
UDPC_set_callback_received(ctx, recCallback, NULL);
|
||||
while(UDPC_get_error(ctx) == UDPC_SUCCESS)
|
||||
{
|
||||
if(isClient && isConnected == 0)
|
||||
if(isClient && testCtx.isConnected == 0)
|
||||
{
|
||||
UDPC_client_initiate_connection(ctx, targetAddress, targetPort);
|
||||
}
|
||||
UDPC_update(ctx);
|
||||
UDPC_check_events(ctx);
|
||||
thrd_sleep(&(struct timespec){0, 16666666}, NULL);
|
||||
if(testCtx.hasConnectedOnce != 0 && testCtx.isConnected == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
UDPC_destroy(ctx);
|
||||
|
|
Loading…
Reference in a new issue