Now you can download a copy of these docs so you can use them offline! Download now
ServerConnectionList.cpp
1 /*
2  * ServerConnectionList.cpp
3  *
4  * Created on: Sep 26, 2012
5  * Author: Mitchell Wills
6  */
7 
8 #include "networktables2/server/ServerConnectionList.h"
9 #include "networktables2/server/ServerIncomingStreamMonitor.h"
10 #include <algorithm>
11 #include <stdio.h>
12 
13 
14 
15 ServerConnectionList::ServerConnectionList(ServerIncomingStreamMonitor *Factory) : m_Factory(Factory)
16 {
17 }
18 ServerConnectionList::~ServerConnectionList()
19 {
20  connectionsLock.take();
21  closeAll();
22 }
23 
25 {
26  NTSynchronized sync(connectionsLock);
27  connections.push_back(&connection);
28 }
29 
30 void ServerConnectionList::close(ServerConnectionAdapter& connectionAdapter, bool closeStream)
31 {
32  NTSynchronized sync(connectionsLock);
33  std::vector<ServerConnectionAdapter*>::iterator connectionPosition = std::find(connections.begin(), connections.end(), &connectionAdapter);
34  if (connectionPosition != connections.end() && (*connectionPosition)==&connectionAdapter)
35  {
36  fprintf(stdout, "[NT] Close: %p\n", (void*)&connectionAdapter);
37  fflush(stdout);
38  connections.erase(connectionPosition);
39  m_Factory->close(&connectionAdapter);
40  //connectionAdapter.shutdown(closeStream);
41  //delete &connectionAdapter;
42  }
43 }
44 
46 {
47  NTSynchronized sync(connectionsLock);
48  while(connections.size() > 0)
49  {
50  close(*connections[0], true);
51  }
52 }
53 
54 void ServerConnectionList::offerOutgoingAssignment(NetworkTableEntry* entry)
55 {
56  NTSynchronized sync(connectionsLock);
57  for(unsigned int i = 0; i < connections.size(); ++i)
58  {
59  connections[i]->offerOutgoingAssignment(entry);
60  }
61 }
62 void ServerConnectionList::offerOutgoingUpdate(NetworkTableEntry* entry)
63 {
64  NTSynchronized sync(connectionsLock);
65  for(unsigned int i = 0; i < connections.size(); ++i)
66  {
67  connections[i]->offerOutgoingUpdate(entry);
68  }
69 }
70 void ServerConnectionList::flush()
71 {
72  NTSynchronized sync(connectionsLock);
73  for(unsigned int i = 0; i < connections.size(); ++i)
74  {
75  connections[i]->flush();
76  }
77 }
78 void ServerConnectionList::ensureAlive()
79 {
80  NTSynchronized sync(connectionsLock);
81  for(unsigned int i = 0; i < connections.size(); ++i)
82  {
83  connections[i]->ensureAlive();
84  }
85 }
void close(ServerConnectionAdapter &connectionAdapter, bool closeStream)
void add(ServerConnectionAdapter &connection)

Generated on Sat Apr 26 2014 12:26:45 for WPILibC++ by doxygen 1.8.6