mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-23 01:21:42 +00:00
Message: use shared_ptr.
NetworkConnection: Own the input and output queues.
This commit is contained in:
committed by
Peter Johnson
parent
beb92e6cbf
commit
13cbf4e288
@@ -21,11 +21,13 @@ namespace ntimpl {
|
||||
|
||||
class NetworkConnection {
|
||||
public:
|
||||
typedef ConcurrentQueue<std::shared_ptr<Message>> Queue;
|
||||
typedef ConcurrentQueue<std::vector<std::shared_ptr<Message>>> BatchQueue;
|
||||
typedef std::shared_ptr<Message> Incoming;
|
||||
typedef ConcurrentQueue<Incoming> IncomingQueue;
|
||||
typedef std::vector<std::shared_ptr<Message>> Outgoing;
|
||||
typedef ConcurrentQueue<Outgoing> OutgoingQueue;
|
||||
|
||||
NetworkConnection(std::unique_ptr<TCPStream> stream, BatchQueue& outgoing,
|
||||
Queue& incoming, Message::GetEntryTypeFunc get_entry_type);
|
||||
NetworkConnection(std::unique_ptr<TCPStream> stream,
|
||||
Message::GetEntryTypeFunc get_entry_type);
|
||||
~NetworkConnection();
|
||||
|
||||
void Start();
|
||||
@@ -33,6 +35,8 @@ class NetworkConnection {
|
||||
|
||||
bool active() const { return m_active; }
|
||||
TCPStream& stream() { return *m_stream; }
|
||||
OutgoingQueue& outgoing() { return m_outgoing; }
|
||||
IncomingQueue& incoming() { return m_incoming; }
|
||||
void set_proto_rev(unsigned int proto_rev) { m_proto_rev = proto_rev; }
|
||||
|
||||
NetworkConnection(const NetworkConnection&) = delete;
|
||||
@@ -45,8 +49,8 @@ class NetworkConnection {
|
||||
void WriteThreadMain();
|
||||
|
||||
std::unique_ptr<TCPStream> m_stream;
|
||||
BatchQueue& m_outgoing;
|
||||
Queue& m_incoming;
|
||||
OutgoingQueue m_outgoing;
|
||||
IncomingQueue m_incoming;
|
||||
Message::GetEntryTypeFunc m_get_entry_type;
|
||||
std::thread m_read_thread;
|
||||
std::thread m_write_thread;
|
||||
|
||||
Reference in New Issue
Block a user