/**
* @brief sends a raw data chunk on the connection.
*
- * @param data the /raw) data chunk which should be sended.
+ * @param data the (raw) data chunk which should be sended.
*/
void T2NClientConnection::real_write(const std::string& data)
{
NOT_REACHED();
return;
}
+ module_logger().debug() << "send " << data.size() << " bytes of data";
ptr->sendData(data);
} // eo T2NServerConnection::real_write(const std::string)
NOT_REACHED();
return;
}
- buffer+= ptr->receiveData();
+ std::string new_data= ptr->receiveData();
+ buffer+= new_data;
+ module_logger().debug() << "got " << new_data.size() << " bytes of new data";
m_got_new_data= true;
reset_timeout();
*/
T2NServerBase::T2NServerBase( ServerSocketBaseImplementationPtr server_port)
: m_server_port(server_port)
+, m_new_data_available(false)
{
SCOPETRACKER();
// register our callback for new incoming conncetions.
server_port->setNewConnectionBaseCallback(
boost::bind(&T2NServerBase::newConnectionSlot, this, _1)
);
+ m_signal_client_got_new_data.connect
+ (
+ boost::bind(&T2NServerBase::clientGotNewDataSlot, this)
+ );
} // eo T2NServerBase::T2NServerBase(ServerSocketBaseImplementationPtr)
/**
+ * @brief callback for "new data available" signal
+ */
+void T2NServerBase::clientGotNewDataSlot()
+{
+ m_new_data_available= true;
+} // eo T2NServerBase::clientGotNewDataSlot()
+
+
+/**
* @brief try to fill the buffers of the managed connections.
*
* will be called by T2NServerBase::fill_buffer().
bool T2NServerBase::fill_buffer(long long usec_timeout, long long* timeout_remaining)
{
SCOPETRACKER();
+
+ if (m_new_data_available)
+ {
+ // short cut if we already know that we have new data:
+ m_new_data_available= false;
+ return true;
+ }
+
int timeout= 0;
if (usec_timeout<0)