You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2010/04/10 00:17:38 UTC

svn commit: r932637 [3/3] - in /activemq/activemq-cpp/trunk/activemq-cpp/src: main/ main/activemq/transport/tcp/ main/decaf/internal/net/tcp/ main/decaf/net/ test/decaf/net/

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketImpl.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketImpl.h?rev=932637&r1=932636&r2=932637&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketImpl.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketImpl.h Fri Apr  9 22:17:38 2010
@@ -41,7 +41,8 @@ namespace net {
     private:
 
         int port;
-        std::string hostname;
+        int localPort;
+        std::string address;
 
     public:
 
@@ -49,7 +50,15 @@ namespace net {
 
         virtual ~SocketImpl();
 
-    protected:
+    public:
+
+        /**
+         * Creates the underlying platform Socket data structures which allows for
+         * Socket options to be applied.  The created socket is in an unconnected state.
+         *
+         * @throws IOException if an I/O error occurs while attempting this operation.
+         */
+        virtual void create() throw( decaf::io::IOException ) = 0;
 
         /**
          * Accepts a new connection on the given Socket.
@@ -68,11 +77,15 @@ namespace net {
          *      The name of the host to connect to, or IP address.
          * @param port
          *      The port number on the host to connect to.
+         * @param timeout
+         *      Time in milliseconds to wait for a connection, 0 indicates forever.
          *
          * @throws IOException if an I/O error occurs while attempting this operation.
+         * @throws IllegalArguementException if a parameter has an illegal value.
          */
-        virtual void connect( const std::string& hostname, int port )
-            throw( decaf::io::IOException ) = 0;
+        virtual void connect( const std::string& hostname, int port, int timeout )
+            throw( decaf::io::IOException,
+                   decaf::lang::exceptions::IllegalArgumentException ) = 0;
 
         /**
          * Binds this Socket instance to the local ip address and port number given.
@@ -157,21 +170,89 @@ namespace net {
         virtual void shutdownOutput() throw( decaf::io::IOException ) = 0;
 
         /**
+         * Gets the specified Socket option.
+         *
+         * @param option
+         *      The Socket options whose value is to be retrieved.
+         *
+         * @returns the value of the given socket option.
+         *
+         * @throws IOException if an I/O error occurs while performing this operation.
+         */
+        virtual int getOption( int option ) const throw( decaf::io::IOException ) = 0;
+
+        /**
+         * Sets the specified option on the Socket if supported.
+         *
+         * @param option
+         *      The Socket option to set.
+         * @param value
+         *      The value of the socket option to apply to the socket.
+         *
+         * @throws IOException if an I/O error occurs while performing this operation.
+         */
+        virtual void setOption( int option, int value ) throw( decaf::io::IOException ) = 0;
+
+        /**
          * Gets the port that this socket has been assigned.
          *
          * @return the Socket's port number.
          */
-         int getPort() {
+         int getPort() const {
              return this->port;
          }
 
          /**
+          * Gets the value of this SocketImpl's local port field.
+          *
+          * @returns the value of localPort.
+          */
+         int getLocalPort() const {
+             return this->localPort;
+         }
+
+         /**
+          * Gets the value of this SocketImpl's address field.
+          *
+          * @returns the value of the address field.
+          */
+         std::string getInetAddress() const {
+             return this->address;
+         }
+
+         /**
+          * Gets the value of the local Inet address the Socket is bound to if bound, otherwise
+          * return the InetAddress ANY value "0.0.0.0".
+          *
+          * @returns the local address bound to, or ANY.
+          */
+         virtual std::string getLocalAddress() const = 0;
+
+         /**
           * Returns a string containing the address and port of this Socket instance.
           *
           * @returns a string containing the address and port of this socket.
           */
          std::string toString() const;
 
+         /**
+          * @returns true if this SocketImpl supports sending Urgent Data.  The default
+          *          implementation always returns false.
+          */
+         virtual bool supportsUrgentData() const {
+             return false;
+         }
+
+         /**
+          * Sends on byte of urgent data to the Socket.
+          *
+          * @param data
+          *      The value to write as urgent data, only the lower eight bits are sent.
+          *
+          * @throws IOException if an I/O error occurs while performing this operation.
+          */
+         virtual void sendUrgentData( int data ) throw( decaf::io::IOException );
+
     };
 
 }}

Added: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketImplFactory.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketImplFactory.h?rev=932637&view=auto
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketImplFactory.h (added)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketImplFactory.h Fri Apr  9 22:17:38 2010
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _DECAF_NET_SOCKETIMPLFACTORY_H_
+#define _DECAF_NET_SOCKETIMPLFACTORY_H_
+
+#include <decaf/util/Config.h>
+
+namespace decaf {
+namespace net {
+
+    class SocketImpl;
+
+    /**
+     * Factory class interface for a Factory that creates ScoketImpl objects.  These
+     * factories can be used to create various types of Sockets, e.g. Streaming, Multicast,
+     * SSL, or platform specific variations of these types.
+     *
+     * @see decaf::net::Socket
+     * @see decaf::net::ServerSocket
+     *
+     * @since 1.0
+     */
+    class DECAF_API SocketImplFactory {
+    public:
+
+        virtual ~SocketImplFactory() {}
+
+        /**
+         * Creates a new SokcetImpl instance and returns it, the caller then owns the
+         * instance and must delete it when finished with the SocketImpl.
+         *
+         * @return new SocketImpl instance that is owned by the caller.
+         */
+        virtual SocketImpl* createSocketImpl() = 0;
+
+    };
+
+}}
+
+#endif /* _DECAF_NET_SOCKETIMPLFACTORY_H_ */

Propchange: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketImplFactory.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketOptions.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketOptions.cpp?rev=932637&r1=932636&r2=932637&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketOptions.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketOptions.cpp Fri Apr  9 22:17:38 2010
@@ -18,23 +18,23 @@
 #include "SocketOptions.h"
 
 using namespace decaf;
-using namespace net;
+using namespace decaf::net;
 
 ////////////////////////////////////////////////////////////////////////////////
-const int SocketOptions::IP_MULTICAST_IF = 16;
-const int SocketOptions::IP_MULTICAST_IF2 = 31;
-const int SocketOptions::IP_MULTICAST_LOOP = 18;
-const int SocketOptions::IP_TOS = 3;
-const int SocketOptions::SO_BINDADDR = 15;
-const int SocketOptions::SO_BROADCAST = 32;
-const int SocketOptions::SO_KEEPALIVE = 8;
-const int SocketOptions::SO_LINGER = 128;
-const int SocketOptions::SO_OOBINLINE = 4099;
-const int SocketOptions::SO_RCVBUF = 4098;
-const int SocketOptions::SO_REUSEADDR = 4;
-const int SocketOptions::SO_SNDBUF = 4097;
-const int SocketOptions::SO_TIMEOUT = 4102;
-const int SocketOptions::TCP_NODELAY = 1;
+const int SocketOptions::SOCKET_OPTION_TCP_NODELAY = 1;
+const int SocketOptions::SOCKET_OPTION_BINDADDR = 2;
+const int SocketOptions::SOCKET_OPTION_REUSEADDR = 3;
+const int SocketOptions::SOCKET_OPTION_BROADCAST = 4;
+const int SocketOptions::SOCKET_OPTION_IP_MULTICAST_IF = 5;
+const int SocketOptions::SOCKET_OPTION_IP_MULTICAST_LOOP = 6;
+const int SocketOptions::SOCKET_OPTION_IP_MULTICAST_IF2 = 7;
+const int SocketOptions::SOCKET_OPTION_IP_TOS = 8;
+const int SocketOptions::SOCKET_OPTION_LINGER = 9;
+const int SocketOptions::SOCKET_OPTION_TIMEOUT = 10;
+const int SocketOptions::SOCKET_OPTION_SNDBUF = 11;
+const int SocketOptions::SOCKET_OPTION_RCVBUF = 12;
+const int SocketOptions::SOCKET_OPTION_KEEPALIVE = 13;
+const int SocketOptions::SOCKET_OPTION_OOBINLINE = 14;
 
 ////////////////////////////////////////////////////////////////////////////////
 SocketOptions::~SocketOptions() {

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketOptions.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketOptions.h?rev=932637&r1=932636&r2=932637&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketOptions.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/SocketOptions.h Fri Apr  9 22:17:38 2010
@@ -34,7 +34,7 @@ namespace net {
          * Disable Nagle's algorithm for this connection. Written data to the network is not
          * buffered pending acknowledgment of previously written data.  Valid for TCP sockets.
          */
-        static const int TCP_NODELAY;
+        static const int SOCKET_OPTION_TCP_NODELAY;
 
         /**
          * Fetch the local address binding of a socket (this option cannot be "set" only "gotten",
@@ -45,13 +45,13 @@ namespace net {
          * specify its return address to the peer (for a Socket or DatagramSocket). The parameter
          * of this option is an InetAddress.
          */
-        static const int SO_BINDADDR;
+        static const int SOCKET_OPTION_BINDADDR;
 
         /**
          * Sets SO_REUSEADDR for a socket. This is used only for MulticastSockets in decaf, and it is
          * set by default for MulticastSockets.
          */
-        static const int SO_REUSEADDR;
+        static const int SOCKET_OPTION_REUSEADDR;
 
         /**
          * Sets SO_BROADCAST for a socket. This option enables and disables the ability of the process
@@ -59,7 +59,7 @@ namespace net {
          * that support the concept of a broadcast message (e.g. Ethernet, token ring, etc.), and it
          * is set by default for DatagramSockets.
          */
-        static const int SO_BROADCAST;
+        static const int SOCKET_OPTION_BROADCAST;
 
         /**
          * Set which outgoing interface on which to send multicast packets. Useful on hosts with
@@ -68,26 +68,26 @@ namespace net {
          *
          * Valid for Multicast: DatagramSocketImpl.
          */
-        static const int IP_MULTICAST_IF;
+        static const int SOCKET_OPTION_IP_MULTICAST_IF;
 
         /**
          * Same as above. This option is introduced so that the behaviour with IP_MULTICAST_IF will
          * be kept the same as before, while this new option can support setting outgoing interfaces
          * with either IPv4 and IPv6 addresses.
          */
-        static const int IP_MULTICAST_IF2;
+        static const int SOCKET_OPTION_IP_MULTICAST_IF2;
 
         /**
          * This option enables or disables local loopback of multicast datagrams. This option is enabled
          * by default for Multicast Sockets.
          */
-        static const int IP_MULTICAST_LOOP;
+        static const int SOCKET_OPTION_IP_MULTICAST_LOOP;
 
         /**
          * This option sets the type-of-service or traffic class field in the IP header for a TCP or
          * UDP socket.
          */
-        static const int IP_TOS;
+        static const int SOCKET_OPTION_IP_TOS;
 
         /**
          * Specify a linger-on-close timeout. This option disables/enables immediate return from a
@@ -100,13 +100,13 @@ namespace net {
          *
          * Valid only for TCP: SocketImpl
          */
-        static const int SO_LINGER;
+        static const int SOCKET_OPTION_LINGER;
 
         /**
          * Set a timeout on blocking Socket operations.  The option must be set prior to entering a
          * blocking operation to take effect.
          */
-        static const int SO_TIMEOUT;
+        static const int SOCKET_OPTION_TIMEOUT;
 
         /**
          * Set a hint the size of the underlying buffers used by the platform for outgoing network
@@ -115,7 +115,7 @@ namespace net {
          * must return the size of the buffer actually used by the platform when sending out data
          * on this socket. Valid for all sockets: SocketImpl, DatagramSocketImpl
          */
-        static const int SO_SNDBUF;
+        static const int SOCKET_OPTION_SNDBUF;
 
         /**
          * Set a hint the size of the underlying buffers used by the platform for incoming network
@@ -124,7 +124,7 @@ namespace net {
          * this must return the size of the buffer actually used by the platform when receiving in
          * data on this socket. Valid for all sockets: SocketImpl, DatagramSocketImpl.
          */
-        static const int SO_RCVBUF;
+        static const int SOCKET_OPTION_RCVBUF;
 
         /**
          * When the keepalive option is set for a TCP socket and no data has been exchanged across
@@ -139,14 +139,14 @@ namespace net {
          *
          * Valid only for TCP socket: SocketImpl
          */
-        static const int SO_KEEPALIVE;
+        static const int SOCKET_OPTION_KEEPALIVE;
 
         /**
          * When the OOBINLINE option is set, any TCP urgent data received on the socket will be
          * received through the socket input stream. When the option is disabled (which is the default)
          * urgent data is silently discarded.
          */
-        static const int SO_OOBINLINE;
+        static const int SOCKET_OPTION_OOBINLINE;
 
     public:
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/SocketFactoryTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/SocketFactoryTest.cpp?rev=932637&r1=932636&r2=932637&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/SocketFactoryTest.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/SocketFactoryTest.cpp Fri Apr  9 22:17:38 2010
@@ -20,6 +20,10 @@
 #include <decaf/util/Properties.h>
 #include <decaf/net/SocketFactory.h>
 
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
 #include <memory>
 
 using namespace decaf;
@@ -29,6 +33,104 @@ using namespace decaf::lang;
 using namespace decaf::util::concurrent;
 
 ////////////////////////////////////////////////////////////////////////////////
+const int SocketFactoryTest::DEFAULT_PORT = 23232;
+
+////////////////////////////////////////////////////////////////////////////////
+namespace{
+
+    class MyServerThread : public lang::Thread{
+    private:
+
+        bool done;
+        int numClients;
+        std::string lastMessage;
+
+    public:
+
+        util::concurrent::Mutex mutex;
+
+    public:
+
+        MyServerThread(){
+            done = false;
+            numClients = 0;
+        }
+        virtual ~MyServerThread(){
+            stop();
+        }
+
+        std::string getLastMessage(){
+            return lastMessage;
+        }
+
+        int getNumClients(){
+            return numClients;
+        }
+
+        virtual void stop(){
+            done = true;
+        }
+
+        virtual void run(){
+            try{
+                unsigned char buf[1000];
+
+                ServerSocket server;
+                server.bind( "127.0.0.1", SocketFactoryTest::DEFAULT_PORT );
+
+                net::Socket* socket = server.accept();
+                server.close();
+
+                socket->setSoLinger( false, 0 );
+
+                synchronized(&mutex)
+                {
+                    numClients++;
+                    mutex.notifyAll();
+                }
+
+                while( !done && socket != NULL ){
+
+                    io::InputStream* stream = socket->getInputStream();
+                    memset( buf, 0, 1000 );
+                    try{
+                        if( stream->read( buf, 1000, 0, 1000 ) == -1 ) {
+                            done = true;
+                            continue;
+                        }
+
+                        lastMessage = (char*)buf;
+
+                        if( strcmp( (char*)buf, "reply" ) == 0 ){
+                            io::OutputStream* output = socket->getOutputStream();
+                            output->write( (unsigned char*)"hello", (int)strlen("hello"), 0, (int)strlen("hello") );
+                        }
+
+                    }catch( io::IOException& ex ){
+                        done = true;
+                    }
+                }
+
+                socket->close();
+                delete socket;
+
+                numClients--;
+
+                synchronized(&mutex) {
+                    mutex.notifyAll();
+                }
+
+            }catch( io::IOException& ex ){
+                printf("%s\n", ex.getMessage().c_str() );
+                CPPUNIT_ASSERT( false );
+            }catch( ... ){
+                CPPUNIT_ASSERT( false );
+            }
+        }
+    };
+}
+
+////////////////////////////////////////////////////////////////////////////////
 void SocketFactoryTest::test()
 {
     try
@@ -39,9 +141,9 @@ void SocketFactoryTest::test()
         Thread::sleep( 500 );
 
         std::auto_ptr<SocketFactory> factory( SocketFactory::getDefault() );
-        std::auto_ptr<Socket> client( factory->createSocket( "127.0.0.1", port ) );
+        std::auto_ptr<Socket> client( factory->createSocket( "127.0.0.1", SocketFactoryTest::DEFAULT_PORT ) );
 
-        client->setSoLinger( 0 );
+        client->setSoLinger( false, 0 );
 
         synchronized(&serverThread.mutex)
         {
@@ -88,9 +190,9 @@ void SocketFactoryTest::testNoDelay()
         Thread::sleep( 40 );
 
         std::auto_ptr<SocketFactory> factory( SocketFactory::getDefault() );
-        std::auto_ptr<Socket> client( factory->createSocket( "127.0.0.1", port ) );
+        std::auto_ptr<Socket> client( factory->createSocket( "127.0.0.1", SocketFactoryTest::DEFAULT_PORT ) );
 
-        client->setSoLinger( 0 );
+        client->setSoLinger( false, 0 );
         client->setTcpNoDelay( true );
 
         CPPUNIT_ASSERT( client->getTcpNoDelay() == true );

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/SocketFactoryTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/SocketFactoryTest.h?rev=932637&r1=932636&r2=932637&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/SocketFactoryTest.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/SocketFactoryTest.h Fri Apr  9 22:17:38 2010
@@ -32,105 +32,16 @@
 namespace decaf{
 namespace net{
 
-    class SocketFactoryTest : public CppUnit::TestFixture
-    {
+    class SocketFactoryTest : public CppUnit::TestFixture {
+
         CPPUNIT_TEST_SUITE( SocketFactoryTest );
         CPPUNIT_TEST( test );
         CPPUNIT_TEST( testNoDelay );
         CPPUNIT_TEST_SUITE_END();
 
-        static const int port = 23232;
-
-        class MyServerThread : public lang::Thread{
-        private:
+    public:
 
-            bool done;
-            int numClients;
-            std::string lastMessage;
-
-        public:
-
-            util::concurrent::Mutex mutex;
-
-        public:
-
-            MyServerThread(){
-                done = false;
-                numClients = 0;
-            }
-            virtual ~MyServerThread(){
-                stop();
-            }
-
-            std::string getLastMessage(){
-                return lastMessage;
-            }
-
-            int getNumClients(){
-                return numClients;
-            }
-
-            virtual void stop(){
-                done = true;
-            }
-
-            virtual void run(){
-                try{
-                    unsigned char buf[1000];
-
-                    ServerSocket server;
-                    server.bind( "127.0.0.1", port );
-
-                    net::Socket* socket = server.accept();
-                    server.close();
-
-                    socket->setSoLinger( false );
-
-                    synchronized(&mutex)
-                    {
-                        numClients++;
-                        mutex.notifyAll();
-                    }
-
-                    while( !done && socket != NULL ){
-
-                        io::InputStream* stream = socket->getInputStream();
-                        memset( buf, 0, 1000 );
-                        try{
-                            if( stream->read( buf, 1000, 0, 1000 ) == -1 ) {
-                                done = true;
-                                continue;
-                            }
-
-                            lastMessage = (char*)buf;
-
-                            if( strcmp( (char*)buf, "reply" ) == 0 ){
-                                io::OutputStream* output = socket->getOutputStream();
-                                output->write( (unsigned char*)"hello", (int)strlen("hello"), 0, (int)strlen("hello") );
-                            }
-
-                        }catch( io::IOException& ex ){
-                            done = true;
-                        }
-                    }
-
-                    socket->close();
-                    delete socket;
-
-                    numClients--;
-
-                    synchronized(&mutex) {
-                        mutex.notifyAll();
-                    }
-
-                }catch( io::IOException& ex ){
-                    printf("%s\n", ex.getMessage().c_str() );
-                    CPPUNIT_ASSERT( false );
-                }catch( ... ){
-                    CPPUNIT_ASSERT( false );
-                }
-            }
-        };
+        static const int DEFAULT_PORT;
 
     public:
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/SocketTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/SocketTest.cpp?rev=932637&r1=932636&r2=932637&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/SocketTest.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/SocketTest.cpp Fri Apr  9 22:17:38 2010
@@ -80,7 +80,7 @@ namespace {
                 server.close();
 
                 //socket->setSoTimeout( 10 );
-                socket->setSoLinger( false );
+                socket->setSoLinger( false, 0 );
                 numClients++;
 
                 synchronized(&mutex)
@@ -151,7 +151,7 @@ void SocketTest::testConnect() {
         std::auto_ptr<Socket> client( factory->createSocket() );
 
         client->connect( "127.0.0.1", port );
-        client->setSoLinger( false );
+        client->setSoLinger( false, 0 );
 
         synchronized(&serverThread.mutex)
         {
@@ -197,7 +197,7 @@ void SocketTest::testTx() {
         std::auto_ptr<Socket> client( factory->createSocket() );
 
         client->connect("127.0.0.1", port);
-        client->setSoLinger( false );
+        client->setSoLinger( false, 0 );
 
         synchronized(&serverThread.mutex)
         {
@@ -252,7 +252,7 @@ void SocketTest::testTrx() {
         std::auto_ptr<Socket> client( factory->createSocket() );
 
         client->connect("127.0.0.1", port);
-        client->setSoLinger(false);
+        client->setSoLinger( false, 0 );
 
         synchronized(&serverThread.mutex)
         {
@@ -306,7 +306,7 @@ void SocketTest::testRxFail() {
         std::auto_ptr<Socket> client( factory->createSocket() );
 
         client->connect("127.0.0.1", port);
-        client->setSoLinger( false );
+        client->setSoLinger( false, 0 );
 
         synchronized(&serverThread.mutex)
         {
@@ -355,7 +355,7 @@ void SocketTest::testTrxNoDelay() {
         std::auto_ptr<Socket> client( factory->createSocket() );
 
         client->connect("127.0.0.1", port);
-        client->setSoLinger(false);
+        client->setSoLinger( false, 0 );
         client->setTcpNoDelay(true);
 
         CPPUNIT_ASSERT( client->getTcpNoDelay() == true );