Peter Johnson
3b0eb56cf6
Update TODO.
2015-08-02 21:47:56 -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
84ff80710c
Refactor TCP-specific pieces of Dispatcher.
2015-08-02 00:33:41 -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
6703968f73
Dispatcher: Fix shutdown order race.
...
We need to wait until after the dispatch and client/server threads have
been stopped before closing connections, as these threads can add connections.
2015-08-01 23:37:13 -07:00
Peter Johnson
8ec65dbfc8
Use unique_ptr instead of shared_ptr for m_server_acceptor.
2015-08-01 20:29:16 -07:00
Peter Johnson
4670ef6ec5
Refactor StorageTest base class.
2015-08-01 16:33:52 -07:00
Peter Johnson
35e6400174
Storage: Add vector include.
2015-08-01 16:33:39 -07:00
Peter Johnson
67de7af7b2
Storage: Use unique_ptr instead of shared_ptr for Entry.
2015-08-01 11:47:35 -07:00
Peter Johnson
3b207ad2c3
StorageTest: Fix string comparison for Warn().
...
Previously this was comparing pointers rather than the string contents.
2015-08-01 11:45:41 -07:00
Peter Johnson
b5274a495e
Dispatcher: Don't call Storage::GetInstance() internally.
...
This makes it difficult to test. Instead, store reference as member variable,
and populate it at constuction (with an alternate constructor available for
test purposes).
2015-08-01 11:15:04 -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
ecbf76e94b
Update tcpsockets classes to use log framework.
2015-07-31 23:34:54 -07:00
Peter Johnson
6c0103639c
Make LOG() usable from other namespaces.
2015-07-31 23:33:41 -07:00
Peter Johnson
c2eb4a766e
Dispatcher: Provide some INFO-level connection messages.
2015-07-31 23:26:38 -07:00
Peter Johnson
06e8d835dd
Provide ostream output for StringRef.
2015-07-31 23:20:59 -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
a9af4589ac
Don't send empty message lists from dispatch.
...
This terminates the write thread.
2015-07-31 22:49:43 -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
afcfdb13a0
Clean up CMakeLists.txt a bit.
2015-07-31 20:57:56 -07:00
Peter Johnson
3a570add4e
Build as a shared rather than static library.
2015-07-31 20:54:25 -07:00
Peter Johnson
ead125555c
Implement client/server handshaking.
2015-07-31 20:32:52 -07:00
Peter Johnson
98ad6d1b43
Message: Handle receiving Server Hello.
2015-07-31 20:14:15 -07:00
Peter Johnson
978cdadda0
Storage::GetEntryType(): Check for null entry.
2015-07-31 14:16:13 -07:00
Peter Johnson
cde7782c21
Make StorageEntry a struct and move into Storage class.
2015-07-31 13:48:33 -07:00
Peter Johnson
138ebf5b4d
Storage: generate messages rather than intermediate updates.
2015-07-31 13:21:19 -07:00
Tyler Veness
f0e3bb5164
artf4165: D term of PID controller now uses change in input instead of change in error
...
This avoids large additions introduced by the D term when a step change occurs in the setpoint. Otherwise, the changes return the same values. Let error = setpoint - input and prevError = prevSetpoint - prevInput. If the D term is calculated via error - prevError, then:
error - prevError = (setpoint - input) - (prevSetpoint - prevInput)
If we ignore the setpoint changing, then we get:
error - prevError = (setpoint - input) - (setpoint - prevInput)
= prevInput - input
Change-Id: Ifa4af9b265e3c4bd263e8541355f2b80269693e9
2015-07-30 08:55:28 -07:00
Tyler Veness
918cde0c0f
artf4155: Move Port.h from hal/lib/Athena to hal/include/HAL
...
Change-Id: I76a8d8baf4d77b7383c321d16a9286537632c3e9
2015-07-30 08:54:02 -07:00
peter mitrano
43f16510fa
moved ctre includes from C++Devices into Hal
...
Change-Id: I0d0460516b5e26345faa321ed6e24d80eba65358
2015-07-30 07:57:14 -07:00
Brad Miller (WPI)
959f8775d0
Merge "Temporarily disable MutexTests until artf4167 is resolved."
2015-07-30 07:51:14 -07:00
Brad Miller (WPI)
0d70a39f67
Merge "Replaced ::std with std for readability/consistency."
2015-07-30 07:47:38 -07:00
James Kuszmaul
ba57c7f24d
Make gradle actually build command tests in C++.
...
Change-Id: I7052f526facc557eb0a0ca58467e1220722f7d18
2015-07-30 10:00:53 -04:00
Peter Johnson
a127bca0e4
Push down null check for m_queue_outgoing.
2015-07-30 00:06:50 -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
5b5e3ae6aa
Dispatcher: Start implementing processing of incoming messages.
2015-07-29 20:33:26 -07:00
Peter Johnson
f6576b18f7
Storage: Add more Dispatcher accessors.
2015-07-29 20:33:13 -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
James Kuszmaul
4b575e3e7e
Replaced ::std with std for readability/consistency.
...
Change-Id: I65f9673c237d3513f99827e28963eb22ae9df0c2
2015-07-29 16:48:04 -04:00
Peter Johnson
c01f2977ac
StorageEntry: Make value() const.
2015-07-28 22:29:58 -07:00
Peter Johnson
683c53babc
Message::str(): Return StringRef.
2015-07-28 22:07:02 -07:00
Peter Johnson
5823e3c780
Storage: Add CreateEntry function for Dispatcher use.
2015-07-28 22:06:42 -07:00
James Kuszmaul
cbc372c71e
Temporarily disable MutexTests until artf4167 is resolved.
...
Change-Id: I09f4e48ff304df312daf4ebb77681965acf6066d
2015-07-27 11:51:29 -04:00
Peter Johnson
a0d30ffef1
Storage: Use StringMap instead of ConcurrentQueue for updates.
...
Updates are merged or themselves updated as user code changes. This avoids
the need for the dispatcher to do this and also avoids the need for disabling
updates when the dispatcher isn't running, because there's no risk of memory
usage piling up.
2015-07-26 20:41:48 -07:00
Peter Johnson
fb1b82e239
StorageEntry: Also store copy of name here.
...
This wastes a bit of space but is necessary for assign message generation.
2015-07-26 10:28:20 -07:00
Peter Johnson
3bc5699ba1
Storage: Provide accessor for global mutex.
2015-07-26 09:42:14 -07:00
Peter Johnson
18659257d3
Storage: Make setters globally atomic.
...
Previously, setters were locally but not globally atomic because they
used GetEntry() (globally atomic) in conjunction with locally atomic
gets/sets to the StorageEntry. To support synchronizing network handshakes
they need to be globally atomic.
GetEntry() has been removed due to this issue, so a helper was added to
StorageTest instead.
2015-07-26 09:27:23 -07:00
Peter Johnson
3c7cb363ba
NetworkConnection: Prefer emplace to push.
2015-07-25 10:47:53 -07:00
Peter Johnson
787d39851b
Update gradle build to match cmake build.
2015-07-25 01:33:15 -07:00