Peter Johnson
cd53feb193
Log DEBUG() macros: avoid spurious warnings in release builds.
2015-08-04 20:36:39 -07:00
Peter Johnson
00feb67064
Only use enable_if template on Windows.
...
This isn't required and doesn't compile on older GCC versions.
2015-08-04 19:59:45 -07:00
Peter Johnson
b3eed38187
Get build working on Windows (MSVC 2013).
...
Windows needs static libraries to build the tests as gtest/gmock are built statically.
2015-08-04 01:29:06 -07:00
Peter Johnson
f683a5c63c
Export C API functions on Win32.
2015-08-04 00:15:00 -07:00
Peter Johnson
7d409f071e
Add win32 tcpsockets implementation.
2015-08-04 00:01:13 -07:00
Peter Johnson
4146db6fc8
Visual Studio 2013 compilation fixes.
...
- Missing header file callouts in some cases (library deltas)
- Lack of support for auto parameters in lambdas
- Defining of ERROR by windows.h
- Dispatcher::Connection needs a move constructor (default not generated)
- Need explicit enable_if on std::string move template in Value to avoid trying to move const char[] (string literal)
- Compile flags
2015-08-03 01:27:02 -07:00
Peter Johnson
a86f65db1e
Dispatcher: Implement transmit combining.
...
This handles most of the major cases, but not a loop of delete/assign, which
should be uncommon anyway.
2015-08-02 23:21:23 -07:00
Peter Johnson
53a0531def
Storage::ProcessIncoming(): Don't override parameter with local.
2015-08-02 23:20:42 -07:00
Peter Johnson
7db00575c9
NetworkConnection: Add a bit more debugging.
2015-08-02 22:23:14 -07:00
Peter Johnson
5b65bfb64d
Storage: Fix comparison for client update-on-assign.
2015-08-02 22:18:46 -07:00
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