Message: use shared_ptr.

NetworkConnection: Own the input and output queues.
This commit is contained in:
Peter Johnson
2015-07-15 21:20:18 -07:00
committed by Peter Johnson
parent beb92e6cbf
commit 13cbf4e288
4 changed files with 151 additions and 123 deletions

View File

@@ -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;