File: switchWatcher.cpp

package info (click to toggle)
libaria 2.8.0%2Brepack-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 13,628 kB
  • ctags: 16,574
  • sloc: cpp: 135,490; makefile: 925; python: 597; java: 570; ansic: 182
file content (105 lines) | stat: -rw-r--r-- 2,883 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "Aria.h"
#include "ArNetworking.h"


void clientListHandler(ArNetPacket *packet)
{
  int numClients;
  int i;
  char hostName[512];
  int port;
  char robotName[512];
  char flags[512];
  char robotIP[512];
  

  numClients = packet->bufToUByte2();
  printf("%d clients connected to server\n", numClients);
  for (i = 0; i < numClients; i++)
  {
    packet->bufToStr(hostName, sizeof(hostName));
    port = packet->bufToUByte2();
    packet->bufToStr(robotName, sizeof(robotName));
    packet->bufToStr(flags, sizeof(flags));
    packet->bufToStr(robotIP, sizeof(robotIP));
    printf("\tHost: '%s' Port: %d ID: '%s' Flags: %s IP: %s\n", hostName, port, robotName, flags, robotIP);
  }
  printf("\n");
}


void clientRemovedHandler(ArNetPacket *packet)
{
  char hostName[512];
  int port;
  char robotName[512];
  char flags[512];
  char robotIP[512];

  packet->bufToStr(hostName, sizeof(hostName));
  port = packet->bufToUByte2();
  packet->bufToStr(robotName, sizeof(robotName));
  packet->bufToStr(flags, sizeof(flags));
  packet->bufToStr(robotIP, sizeof(robotIP));
  printf("Removed Host: '%s' Port: %d ID: '%s' Flags: %s IP: %s\n", hostName, port, robotName, flags, robotIP);
}

void clientAddedHandler(ArNetPacket *packet)
{
  char hostName[512];
  int port;
  char robotName[512];
  char flags[512];
  char robotIP[512];

  packet->bufToStr(hostName, sizeof(hostName));
  port = packet->bufToUByte2();
  packet->bufToStr(robotName, sizeof(robotName));
  packet->bufToStr(flags, sizeof(flags));
  packet->bufToStr(robotIP, sizeof(robotIP));
  printf("Added Host: '%s' Port: %d ID: '%s' Flags: %s IP: %s\n", hostName, port, robotName, flags, robotIP);
}

int main(int argc, char **argv)
{
  Aria::init();
  ArGlobalFunctor1<ArNetPacket *> clientListHandlerCB(&clientListHandler);
  ArGlobalFunctor1<ArNetPacket *> clientAddedHandlerCB(&clientAddedHandler);
  ArGlobalFunctor1<ArNetPacket *> clientRemovedHandlerCB(&clientRemovedHandler);
  ArNetPacket packet;

  ArClientBase client;

  ArArgumentParser parser(&argc, argv);

  ArClientSimpleConnector clientConnector(&parser);

  parser.loadDefaultArguments();

  if (!Aria::parseArgs() || !parser.checkHelpAndWarnUnparsed())
  {
    Aria::logOptions();
    exit(0);
  }

  if (!clientConnector.connectClient(&client))
  {
    if (client.wasRejected())
      printf("Server '%s' rejected connection, exiting\n", client.getHost());
    else
      printf("Could not connect to server '%s', exiting\n", client.getHost());
    exit(1);
  } 

  printf("Connected to server.\n");

  client.addHandler("clientList", &clientListHandlerCB);
  client.requestOnce("clientList");
  client.addHandler("clientRemoved", &clientRemovedHandlerCB);
  client.request("clientRemoved", -1);
  client.addHandler("clientAdded", &clientAddedHandlerCB);
  client.request("clientAdded", -1);
  client.run();
  Aria::shutdown();
  return 0;
}