Peter Johnson
424efca1bf
NetworkConnection: bump debug levels a bit.
...
DEBUG4 is getting pretty verbose.
2015-11-02 22:12:20 -08:00
Peter Johnson
03ee425e5f
Add additional debug messages.
2015-11-01 22:48:11 -08:00
Peter Johnson
dd0e3e4abb
Implement join with timeout (and detach).
...
Under certain situations (notably JNI shutdown), it's possible to get
deadlock when using thread join(). To avoid this, implement a timeout.
Normally we try to simply join the thread, but if it times out, we
detach the thread instead.
2015-10-09 23:50:01 -07:00
Peter Johnson
953a2ce807
Implement keep-alives.
2015-09-08 23:17:11 -07:00
Peter Johnson
302cc064c6
ConnectionListener: Use bool instead of int for connected parameter.
2015-08-27 23:48:40 -07:00
Peter Johnson
8d7cdeabbf
Implement remote procedure calls.
2015-08-13 21:32:16 -07:00
Peter Johnson
7db00575c9
NetworkConnection: Add a bit more debugging.
2015-08-02 22:23:14 -07:00
Peter Johnson
e9073a3cc0
Implement notifiers.
...
The notifier thread is lazily started when the first notifier is added.
This avoids the extra thread/processing overhead when notifiers are not used.
2015-08-02 21:47:01 -07:00
Peter Johnson
538a19fd47
Implement GetConnections().
2015-08-02 10:47:05 -07:00
Peter Johnson
0dcaf56ed1
Add NetworkAcceptor and NetworkStream interfaces.
...
These allow mocking of TCPAcceptor and TCPStream respectively.
2015-08-02 00:06:27 -07:00
Peter Johnson
11508b77d1
Ensure initial synchronization is atomic.
2015-07-31 23:56:06 -07:00
Peter Johnson
0a10778697
NetworkConnection: Kill write thread when read dies and vice-versa.
2015-07-31 23:40:16 -07:00
Peter Johnson
3a71acec52
Automatically reconnect client.
...
Also clean up some condition variable handling to make it more robust.
2015-07-31 23:14:26 -07:00
Peter Johnson
4356e313ec
Add logging framework.
...
DEBUG messages are completely optimized out if NDEBUG is defined.
2015-07-31 22:41:26 -07:00
Peter Johnson
ead125555c
Implement client/server handshaking.
2015-07-31 20:32:52 -07:00
Peter Johnson
83be99e78c
Immediately process incoming messages.
...
This required moving message processing into the Storage class.
2015-07-29 23:45:04 -07:00
Peter Johnson
9a621e9272
Various NetworkConnection improvements.
...
- Keep connection state.
- Store remote id
- Getter for proto_rev
- Cleanup on Stop()
- Cleaner termination of write thread.
2015-07-29 20:31:59 -07:00
Peter Johnson
3c7cb363ba
NetworkConnection: Prefer emplace to push.
2015-07-25 10:47:53 -07:00
Peter Johnson
0979c1c9ca
Storage, NetworkConnection: Don't in-place construct atomics.
...
Visual C++ 2013 doesn't support this.
2015-07-20 20:52:26 -07:00
Peter Johnson
a6162ba990
NetworkConnection: Trigger threads as necessary in Stop().
2015-07-17 22:28:47 -07:00
Peter Johnson
fcbd2751ba
Provide C++ API. Move all classes to "nt" namespace.
...
The C API is now just simple wrappers around the C++ API.
2015-07-17 07:21:07 -07:00
Peter Johnson
13cbf4e288
Message: use shared_ptr.
...
NetworkConnection: Own the input and output queues.
2015-07-15 21:20:18 -07:00
Peter Johnson
beb92e6cbf
NetworkConnection: Ignore duplicate Start() calls.
2015-07-14 23:15:30 -07:00
Peter Johnson
e640708245
Start implementing network connectivity.
...
Change-Id: I82875bfd1c3a086033d22de636d4fb43455ebac3
2015-07-13 22:46:41 -07:00