diff options
-rw-r--r-- | src/connection.cpp | 26 | ||||
-rw-r--r-- | src/connection.h | 16 |
2 files changed, 28 insertions, 14 deletions
diff --git a/src/connection.cpp b/src/connection.cpp index cf5be7ed6..a9f1d5457 100644 --- a/src/connection.cpp +++ b/src/connection.cpp @@ -1236,10 +1236,9 @@ SharedBuffer<u8> UDPPeer::addSpiltPacket(u8 channel, /* Connection Threads */ /******************************************************************************/ -ConnectionSendThread::ConnectionSendThread(Connection* parent, - unsigned int max_packet_size, +ConnectionSendThread::ConnectionSendThread( unsigned int max_packet_size, float timeout) : - m_connection(parent), + m_connection(NULL), m_max_packet_size(max_packet_size), m_timeout(timeout), m_max_commands_per_iteration(1), @@ -1250,6 +1249,7 @@ ConnectionSendThread::ConnectionSendThread(Connection* parent, void * ConnectionSendThread::Thread() { + assert(m_connection != NULL); ThreadStarted(); log_register_thread("ConnectionSend"); @@ -1995,14 +1995,14 @@ void ConnectionSendThread::sendAsPacket(u16 peer_id, u8 channelnum, m_outgoing_queue.push_back(packet); } -ConnectionReceiveThread::ConnectionReceiveThread(Connection* parent, - unsigned int max_packet_size) : - m_connection(parent) +ConnectionReceiveThread::ConnectionReceiveThread(unsigned int max_packet_size) : + m_connection(NULL) { } void * ConnectionReceiveThread::Thread() { + assert(m_connection != NULL); ThreadStarted(); log_register_thread("ConnectionReceive"); @@ -2657,8 +2657,8 @@ Connection::Connection(u32 protocol_id, u32 max_packet_size, float timeout, m_event_queue(), m_peer_id(0), m_protocol_id(protocol_id), - m_sendThread(this, max_packet_size, timeout), - m_receiveThread(this, max_packet_size), + m_sendThread(max_packet_size, timeout), + m_receiveThread(max_packet_size), m_info_mutex(), m_bc_peerhandler(0), m_bc_receive_timeout(0), @@ -2667,6 +2667,9 @@ Connection::Connection(u32 protocol_id, u32 max_packet_size, float timeout, { m_udpSocket.setTimeoutMs(5); + m_sendThread.setParent(this); + m_receiveThread.setParent(this); + m_sendThread.Start(); m_receiveThread.Start(); } @@ -2678,8 +2681,8 @@ Connection::Connection(u32 protocol_id, u32 max_packet_size, float timeout, m_event_queue(), m_peer_id(0), m_protocol_id(protocol_id), - m_sendThread(this, max_packet_size, timeout), - m_receiveThread(this, max_packet_size), + m_sendThread(max_packet_size, timeout), + m_receiveThread(max_packet_size), m_info_mutex(), m_bc_peerhandler(peerhandler), m_bc_receive_timeout(0), @@ -2689,6 +2692,9 @@ Connection::Connection(u32 protocol_id, u32 max_packet_size, float timeout, { m_udpSocket.setTimeoutMs(5); + m_sendThread.setParent(this); + m_receiveThread.setParent(this); + m_sendThread.Start(); m_receiveThread.Start(); diff --git a/src/connection.h b/src/connection.h index 516702cb8..be1627dfa 100644 --- a/src/connection.h +++ b/src/connection.h @@ -918,13 +918,17 @@ class ConnectionSendThread : public JThread { public: friend class UDPPeer; - ConnectionSendThread(Connection* parent, - unsigned int max_packet_size, float timeout); + ConnectionSendThread(unsigned int max_packet_size, float timeout); void * Thread (); void Trigger(); + void setParent(Connection* parent) { + assert(parent != NULL); + m_connection = parent; + } + void setPeerTimeout(float peer_timeout) { m_timeout = peer_timeout; } @@ -970,11 +974,15 @@ private: class ConnectionReceiveThread : public JThread { public: - ConnectionReceiveThread(Connection* parent, - unsigned int max_packet_size); + ConnectionReceiveThread(unsigned int max_packet_size); void * Thread (); + void setParent(Connection* parent) { + assert(parent != NULL); + m_connection = parent; + } + private: void receive (); |