From 5ac63140b01fed145fa41f613308e134420920ab Mon Sep 17 00:00:00 2001 From: Martin Sustrik Date: Thu, 28 Jul 2011 13:19:55 +0200 Subject: Implementations of TCP and IPC transports separated Signed-off-by: Martin Sustrik --- src/tcp_listener.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/tcp_listener.cpp') diff --git a/src/tcp_listener.cpp b/src/tcp_listener.cpp index d334768..360be8c 100644 --- a/src/tcp_listener.cpp +++ b/src/tcp_listener.cpp @@ -87,6 +87,26 @@ void zmq::tcp_listener_t::in_event () if (fd == retired_fd) return; + // Disable Nagle's algorithm. We are doing data batching on 0MQ level, + // so using Nagle wouldn't improve throughput in anyway, but it would + // hurt latency. + int nodelay = 1; + int rc = setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, (char*) &nodelay, + sizeof (int)); +#ifdef ZMQ_HAVE_WINDOWS + wsa_assert (rc != SOCKET_ERROR); +#else + errno_assert (rc == 0); +#endif + +#ifdef ZMQ_HAVE_OPENVMS + // Disable delayed acknowledgements as they hurt latency is serious manner. + int nodelack = 1; + rc = setsockopt (fd, IPPROTO_TCP, TCP_NODELACK, (char*) &nodelack, + sizeof (int)); + errno_assert (rc != SOCKET_ERROR); +#endif + // Create the engine object for this connection. tcp_engine_t *engine = new (std::nothrow) tcp_engine_t (fd, options); alloc_assert (engine); -- cgit v1.2.3