mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			Netsocket: Remove deprecated TCPServer
TCPSocket should be used instead.pull/12694/head
							parent
							
								
									e1daa7906d
								
							
						
					
					
						commit
						236054175b
					
				| 
						 | 
				
			
			@ -1,98 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2018, Arm Limited and affiliates
 | 
			
		||||
 * SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "gtest/gtest.h"
 | 
			
		||||
#include "features/netsocket/TCPSocket.h"
 | 
			
		||||
#include "features/netsocket/TCPServer.h"
 | 
			
		||||
#include "NetworkStack_stub.h"
 | 
			
		||||
 | 
			
		||||
// Control the rtos EventFlags stub. See EventFlags_stub.cpp
 | 
			
		||||
extern std::list<uint32_t> eventFlagsStubNextRetval;
 | 
			
		||||
 | 
			
		||||
class TestTCPServer : public testing::Test {
 | 
			
		||||
public:
 | 
			
		||||
    unsigned int dataSize = 10;
 | 
			
		||||
    char dataBuf[10];
 | 
			
		||||
protected:
 | 
			
		||||
    TCPSocket *socket;
 | 
			
		||||
    TCPServer *server;
 | 
			
		||||
    NetworkStackstub stack;
 | 
			
		||||
 | 
			
		||||
    virtual void SetUp()
 | 
			
		||||
    {
 | 
			
		||||
        server = new TCPServer();
 | 
			
		||||
        socket = new TCPSocket();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual void TearDown()
 | 
			
		||||
    {
 | 
			
		||||
        stack.return_values.clear();
 | 
			
		||||
        eventFlagsStubNextRetval.clear();
 | 
			
		||||
        delete socket;
 | 
			
		||||
        delete server;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
TEST_F(TestTCPServer, constructor)
 | 
			
		||||
{
 | 
			
		||||
    EXPECT_TRUE(server);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestTCPServer, constructor_parameters)
 | 
			
		||||
{
 | 
			
		||||
    TCPServer serverParam(&stack);
 | 
			
		||||
    const SocketAddress a("127.0.0.1", 1024);
 | 
			
		||||
    EXPECT_EQ(serverParam.connect(a), NSAPI_ERROR_OK);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestTCPServer, accept)
 | 
			
		||||
{
 | 
			
		||||
    const SocketAddress a("127.0.0.1", 1024);
 | 
			
		||||
    EXPECT_EQ(socket->open(&stack), NSAPI_ERROR_OK);
 | 
			
		||||
    EXPECT_EQ(socket->connect(a), NSAPI_ERROR_OK);
 | 
			
		||||
    nsapi_error_t error;
 | 
			
		||||
    EXPECT_EQ(server->open(&stack), NSAPI_ERROR_OK);
 | 
			
		||||
    EXPECT_EQ(server->bind(a), NSAPI_ERROR_OK);
 | 
			
		||||
    server->listen(1);
 | 
			
		||||
    SocketAddress client_addr;
 | 
			
		||||
    EXPECT_EQ(server->accept(socket, &client_addr), NSAPI_ERROR_OK);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestTCPServer, accept_no_socket)
 | 
			
		||||
{
 | 
			
		||||
    SocketAddress client_addr;
 | 
			
		||||
    EXPECT_EQ(server->accept(socket, &client_addr), NSAPI_ERROR_NO_SOCKET);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestTCPServer, accept_error)
 | 
			
		||||
{
 | 
			
		||||
    SocketAddress client_addr;
 | 
			
		||||
    EXPECT_EQ(server->open(&stack), NSAPI_ERROR_OK);
 | 
			
		||||
    stack.return_value = NSAPI_ERROR_AUTH_FAILURE;
 | 
			
		||||
    EXPECT_EQ(server->accept(socket, &client_addr), NSAPI_ERROR_AUTH_FAILURE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestTCPServer, accept_error_would_block)
 | 
			
		||||
{
 | 
			
		||||
    SocketAddress client_addr;
 | 
			
		||||
    EXPECT_EQ(server->open(&stack), NSAPI_ERROR_OK);
 | 
			
		||||
    stack.return_value = NSAPI_ERROR_WOULD_BLOCK;
 | 
			
		||||
    eventFlagsStubNextRetval.push_back(0);
 | 
			
		||||
    eventFlagsStubNextRetval.push_back(osFlagsError); // Break the wait loop
 | 
			
		||||
 | 
			
		||||
    EXPECT_EQ(server->accept(socket, &client_addr), NSAPI_ERROR_WOULD_BLOCK);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,35 +0,0 @@
 | 
			
		|||
 | 
			
		||||
####################
 | 
			
		||||
# UNIT TESTS
 | 
			
		||||
####################
 | 
			
		||||
 | 
			
		||||
# Unit test suite name
 | 
			
		||||
set(TEST_SUITE_NAME "features_netsocket_TCPServer")
 | 
			
		||||
 | 
			
		||||
set(unittest-sources
 | 
			
		||||
  ../features/netsocket/SocketAddress.cpp
 | 
			
		||||
  ../features/netsocket/NetworkStack.cpp
 | 
			
		||||
  ../features/netsocket/InternetSocket.cpp
 | 
			
		||||
  ../features/netsocket/TCPSocket.cpp
 | 
			
		||||
  ../features/netsocket/TCPServer.cpp
 | 
			
		||||
  ../features/frameworks/nanostack-libservice/source/libip4string/ip4tos.c
 | 
			
		||||
  ../features/frameworks/nanostack-libservice/source/libip6string/ip6tos.c
 | 
			
		||||
  ../features/frameworks/nanostack-libservice/source/libip4string/stoip4.c
 | 
			
		||||
  ../features/frameworks/nanostack-libservice/source/libip6string/stoip6.c
 | 
			
		||||
  ../features/frameworks/nanostack-libservice/source/libBits/common_functions.c  
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
set(unittest-test-sources
 | 
			
		||||
  stubs/Mutex_stub.cpp
 | 
			
		||||
  stubs/mbed_assert_stub.cpp
 | 
			
		||||
  stubs/mbed_atomic_stub.c
 | 
			
		||||
  stubs/mbed_critical_stub.c
 | 
			
		||||
  stubs/equeue_stub.c
 | 
			
		||||
  stubs/EventQueue_stub.cpp
 | 
			
		||||
  stubs/mbed_error.c
 | 
			
		||||
  stubs/mbed_shared_queues_stub.cpp
 | 
			
		||||
  stubs/nsapi_dns_stub.cpp
 | 
			
		||||
  stubs/EventFlags_stub.cpp
 | 
			
		||||
  features/netsocket/TCPServer/test_TCPServer.cpp
 | 
			
		||||
  stubs/SocketStats_Stub.cpp
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -49,6 +49,33 @@ protected:
 | 
			
		|||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Control the rtos EventFlags stub. See EventFlags_stub.cpp
 | 
			
		||||
extern std::list<uint32_t> eventFlagsStubNextRetval;
 | 
			
		||||
 | 
			
		||||
class TestTCPServer : public testing::Test {
 | 
			
		||||
public:
 | 
			
		||||
    unsigned int dataSize = 10;
 | 
			
		||||
    char dataBuf[10];
 | 
			
		||||
protected:
 | 
			
		||||
    TCPSocket *socket;
 | 
			
		||||
    TCPSocket *server;
 | 
			
		||||
    NetworkStackstub stack;
 | 
			
		||||
 | 
			
		||||
    virtual void SetUp()
 | 
			
		||||
    {
 | 
			
		||||
        server = new TCPSocket();
 | 
			
		||||
        socket = new TCPSocket();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    virtual void TearDown()
 | 
			
		||||
    {
 | 
			
		||||
        stack.return_values.clear();
 | 
			
		||||
        eventFlagsStubNextRetval.clear();
 | 
			
		||||
        delete socket;
 | 
			
		||||
        delete server;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
TEST_F(TestTCPSocket, get_proto)
 | 
			
		||||
{
 | 
			
		||||
    TCPSocketFriend tcpFriend;
 | 
			
		||||
| 
						 | 
				
			
			@ -231,6 +258,12 @@ TEST_F(TestTCPSocket, recv_from_null)
 | 
			
		|||
    EXPECT_EQ(socket->recvfrom(NULL, dataBuf, dataSize), NSAPI_ERROR_OK);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestTCPSocket, unsupported_api)
 | 
			
		||||
{
 | 
			
		||||
    SocketAddress addr;
 | 
			
		||||
    EXPECT_EQ(socket->join_multicast_group(addr), NSAPI_ERROR_UNSUPPORTED);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* listen */
 | 
			
		||||
 | 
			
		||||
TEST_F(TestTCPSocket, listen_no_open)
 | 
			
		||||
| 
						 | 
				
			
			@ -246,9 +279,9 @@ TEST_F(TestTCPSocket, listen)
 | 
			
		|||
    EXPECT_EQ(socket->listen(1), NSAPI_ERROR_OK);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* these tests will have to be readjusted after TCPServer is deprecated. */
 | 
			
		||||
/* TCP server */
 | 
			
		||||
 | 
			
		||||
TEST_F(TestTCPSocket, accept_no_open)
 | 
			
		||||
TEST_F(TestTCPServer, accept_no_open)
 | 
			
		||||
{
 | 
			
		||||
    nsapi_error_t error;
 | 
			
		||||
    stack.return_value = NSAPI_ERROR_OK;
 | 
			
		||||
| 
						 | 
				
			
			@ -256,12 +289,17 @@ TEST_F(TestTCPSocket, accept_no_open)
 | 
			
		|||
    EXPECT_EQ(error, NSAPI_ERROR_NO_SOCKET);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestTCPSocket, accept)
 | 
			
		||||
TEST_F(TestTCPServer, accept)
 | 
			
		||||
{
 | 
			
		||||
    const SocketAddress a("127.0.0.1", 1024);
 | 
			
		||||
    EXPECT_EQ(socket->open(&stack), NSAPI_ERROR_OK);
 | 
			
		||||
    EXPECT_EQ(socket->connect(a), NSAPI_ERROR_OK);
 | 
			
		||||
    nsapi_error_t error;
 | 
			
		||||
    stack.return_value = NSAPI_ERROR_OK;
 | 
			
		||||
    EXPECT_EQ(server->open(&stack), NSAPI_ERROR_OK);
 | 
			
		||||
    EXPECT_EQ(server->bind(a), NSAPI_ERROR_OK);
 | 
			
		||||
    server->listen(1);
 | 
			
		||||
    socket->open(&stack);
 | 
			
		||||
    TCPSocket *sock = socket->accept(&error);
 | 
			
		||||
    TCPSocket *sock = server->accept(&error);
 | 
			
		||||
    EXPECT_NE(sock, nullptr);
 | 
			
		||||
    EXPECT_EQ(error, NSAPI_ERROR_OK);
 | 
			
		||||
    if (sock) {
 | 
			
		||||
| 
						 | 
				
			
			@ -269,19 +307,26 @@ TEST_F(TestTCPSocket, accept)
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestTCPSocket, accept_would_block)
 | 
			
		||||
TEST_F(TestTCPServer, accept_would_block)
 | 
			
		||||
{
 | 
			
		||||
    nsapi_error_t error;
 | 
			
		||||
    socket->open(&stack);
 | 
			
		||||
    EXPECT_EQ(server->open(&stack), NSAPI_ERROR_OK);
 | 
			
		||||
 | 
			
		||||
    stack.return_value = NSAPI_ERROR_WOULD_BLOCK;
 | 
			
		||||
    eventFlagsStubNextRetval.push_back(0);
 | 
			
		||||
    eventFlagsStubNextRetval.push_back(osFlagsError); // Break the wait loop
 | 
			
		||||
 | 
			
		||||
    EXPECT_EQ(socket->accept(&error), nullptr);
 | 
			
		||||
    EXPECT_EQ(error, NSAPI_ERROR_WOULD_BLOCK);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST_F(TestTCPSocket, unsupported_api)
 | 
			
		||||
TEST_F(TestTCPServer, accept_error)
 | 
			
		||||
{
 | 
			
		||||
    SocketAddress addr;
 | 
			
		||||
    EXPECT_EQ(socket->join_multicast_group(addr), NSAPI_ERROR_UNSUPPORTED);
 | 
			
		||||
    nsapi_error_t error;
 | 
			
		||||
    EXPECT_EQ(server->open(&stack), NSAPI_ERROR_OK);
 | 
			
		||||
    stack.return_value = NSAPI_ERROR_AUTH_FAILURE;
 | 
			
		||||
    TCPSocket *sock = server->accept(&error);
 | 
			
		||||
    EXPECT_EQ(server->accept(&error), nullptr);
 | 
			
		||||
    EXPECT_EQ(error, NSAPI_ERROR_AUTH_FAILURE);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -153,7 +153,7 @@
 | 
			
		|||
 | 
			
		||||
#define MEM_SIZE                    MBED_CONF_LWIP_MEM_SIZE
 | 
			
		||||
 | 
			
		||||
// One tcp_pcb_listen is needed for each TCPServer.
 | 
			
		||||
// One tcp_pcb_listen is needed for each TCP server.
 | 
			
		||||
// Each requires 72 bytes of RAM.
 | 
			
		||||
#define MEMP_NUM_TCP_PCB_LISTEN     MBED_CONF_LWIP_TCP_SERVER_MAX
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -172,7 +172,7 @@
 | 
			
		|||
// Each netbuf requires 64 bytes of RAM.
 | 
			
		||||
#define MEMP_NUM_NETBUF             MBED_CONF_LWIP_NUM_NETBUF
 | 
			
		||||
 | 
			
		||||
// One netconn is needed for each UDPSocket, TCPSocket or TCPServer.
 | 
			
		||||
// One netconn is needed for each UDPSocket or TCPSocket.
 | 
			
		||||
// Each requires 236 bytes of RAM (total rounded to multiple of 512).
 | 
			
		||||
#define MEMP_NUM_NETCONN            MBED_CONF_LWIP_SOCKET_MAX
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,7 +59,7 @@
 | 
			
		|||
            "value": false
 | 
			
		||||
        },
 | 
			
		||||
        "socket-max": {
 | 
			
		||||
            "help": "Maximum number of open TCPServer, TCPSocket and UDPSocket instances allowed, including one used internally for DNS.  Each requires 236 bytes of pre-allocated RAM",
 | 
			
		||||
            "help": "Maximum number of open TCPSocket and UDPSocket instances allowed, including one used internally for DNS.  Each requires 236 bytes of pre-allocated RAM",
 | 
			
		||||
            "value": 4
 | 
			
		||||
        },
 | 
			
		||||
        "tcp-enabled": {
 | 
			
		||||
| 
						 | 
				
			
			@ -67,7 +67,7 @@
 | 
			
		|||
            "value": true
 | 
			
		||||
        },
 | 
			
		||||
        "tcp-server-max": {
 | 
			
		||||
            "help": "Maximum number of open TCPServer instances allowed.  Each requires 72 bytes of pre-allocated RAM",
 | 
			
		||||
            "help": "Maximum number of open TCP server instances allowed.  Each requires 72 bytes of pre-allocated RAM",
 | 
			
		||||
            "value": 4
 | 
			
		||||
        },
 | 
			
		||||
        "tcp-socket-max": {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -244,7 +244,6 @@ protected:
 | 
			
		|||
    friend class InternetSocket;
 | 
			
		||||
    friend class InternetDatagramSocket;
 | 
			
		||||
    friend class TCPSocket;
 | 
			
		||||
    friend class TCPServer;
 | 
			
		||||
 | 
			
		||||
    /** Opens a socket
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,75 +0,0 @@
 | 
			
		|||
/* Socket
 | 
			
		||||
 * Copyright (c) 2015 ARM Limited
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "TCPServer.h"
 | 
			
		||||
 | 
			
		||||
TCPServer::TCPServer()
 | 
			
		||||
{
 | 
			
		||||
    _socket_stats.stats_update_proto(this, NSAPI_TCP);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
nsapi_error_t TCPServer::accept(TCPSocket *connection, SocketAddress *address)
 | 
			
		||||
{
 | 
			
		||||
    _lock.lock();
 | 
			
		||||
    nsapi_error_t ret;
 | 
			
		||||
 | 
			
		||||
    while (true) {
 | 
			
		||||
        if (!_socket) {
 | 
			
		||||
            ret = NSAPI_ERROR_NO_SOCKET;
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        core_util_atomic_flag_clear(&_pending);
 | 
			
		||||
        void *socket;
 | 
			
		||||
        ret = _stack->socket_accept(_socket, &socket, address);
 | 
			
		||||
 | 
			
		||||
        if (0 == ret) {
 | 
			
		||||
            connection->_lock.lock();
 | 
			
		||||
 | 
			
		||||
            if (connection->_socket) {
 | 
			
		||||
                connection->close();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            connection->_stack = _stack;
 | 
			
		||||
            connection->_socket = socket;
 | 
			
		||||
            connection->_event = { connection, &TCPSocket::event };
 | 
			
		||||
            _stack->socket_attach(socket, connection->_event.thunk, &connection->_event);
 | 
			
		||||
            _socket_stats.stats_update_peer(connection, *address);
 | 
			
		||||
            _socket_stats.stats_update_socket_state(connection, SOCK_CONNECTED);
 | 
			
		||||
            connection->_lock.unlock();
 | 
			
		||||
            break;
 | 
			
		||||
        } else if ((_timeout == 0) || (ret != NSAPI_ERROR_WOULD_BLOCK)) {
 | 
			
		||||
            break;
 | 
			
		||||
        } else {
 | 
			
		||||
            uint32_t flag;
 | 
			
		||||
 | 
			
		||||
            // Release lock before blocking so other threads
 | 
			
		||||
            // accessing this object aren't blocked
 | 
			
		||||
            _lock.unlock();
 | 
			
		||||
            flag = _event_flag.wait_any(READ_FLAG, _timeout);
 | 
			
		||||
            _lock.lock();
 | 
			
		||||
 | 
			
		||||
            if (flag & osFlagsError) {
 | 
			
		||||
                // Timeout break
 | 
			
		||||
                ret = NSAPI_ERROR_WOULD_BLOCK;
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    _lock.unlock();
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,81 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2015 ARM Limited
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/** @file TCPServer.h Deprecated TCPServer class */
 | 
			
		||||
/** \addtogroup netsocket
 | 
			
		||||
 * @{*/
 | 
			
		||||
 | 
			
		||||
#ifndef TCPSERVER_H
 | 
			
		||||
#define TCPSERVER_H
 | 
			
		||||
 | 
			
		||||
#include "netsocket/InternetSocket.h"
 | 
			
		||||
#include "netsocket/TCPSocket.h"
 | 
			
		||||
#include "netsocket/NetworkStack.h"
 | 
			
		||||
#include "netsocket/NetworkInterface.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/** TCP socket server
 | 
			
		||||
 */
 | 
			
		||||
class TCPServer : public TCPSocket {
 | 
			
		||||
public:
 | 
			
		||||
    /** Create an uninitialized socket
 | 
			
		||||
     *
 | 
			
		||||
     *  Must call open to initialize the socket on a network stack.
 | 
			
		||||
     */
 | 
			
		||||
    MBED_DEPRECATED_SINCE("mbed-os-5.10",
 | 
			
		||||
                          "TCPServer is deprecated, use TCPSocket")
 | 
			
		||||
    TCPServer();
 | 
			
		||||
 | 
			
		||||
    /** Create a socket on a network interface
 | 
			
		||||
     *
 | 
			
		||||
     *  Creates and opens a socket on the network stack of the given
 | 
			
		||||
     *  network interface.
 | 
			
		||||
     *
 | 
			
		||||
     *  @param stack    Network stack as target for socket
 | 
			
		||||
     */
 | 
			
		||||
    template <typename S>
 | 
			
		||||
    MBED_DEPRECATED_SINCE("mbed-os-5.10",
 | 
			
		||||
                          "TCPServer is deprecated, use TCPSocket")
 | 
			
		||||
    TCPServer(S *stack)
 | 
			
		||||
    {
 | 
			
		||||
        open(stack);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Allow legacy TCPServer::accept() to override inherited Socket::accept()
 | 
			
		||||
    using TCPSocket::accept;
 | 
			
		||||
 | 
			
		||||
    /** Accepts a connection on a TCP socket
 | 
			
		||||
     *
 | 
			
		||||
     *  The server socket must be bound and set to listen for connections.
 | 
			
		||||
     *  On a new connection, creates a network socket using the specified
 | 
			
		||||
     *  socket instance.
 | 
			
		||||
     *
 | 
			
		||||
     *  By default, accept blocks until data is sent. If socket is set to
 | 
			
		||||
     *  non-blocking or times out, NSAPI_ERROR_WOULD_BLOCK is returned
 | 
			
		||||
     *  immediately.
 | 
			
		||||
     *
 | 
			
		||||
     *  @param connection TCPSocket instance that will handle the incoming connection.
 | 
			
		||||
     *  @param address    Destination for the remote address or NULL
 | 
			
		||||
     *  @return           0 on success, negative error code on failure
 | 
			
		||||
     */
 | 
			
		||||
    MBED_DEPRECATED_SINCE("mbed-os-5.10",
 | 
			
		||||
                          "TCPServer::accept() is deprecated, use Socket *Socket::accept() instead")
 | 
			
		||||
    nsapi_error_t accept(TCPSocket *connection, SocketAddress *address = NULL);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/** @} */
 | 
			
		||||
| 
						 | 
				
			
			@ -177,7 +177,6 @@ public:
 | 
			
		|||
    nsapi_error_t listen(int backlog = 1) override;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    friend class TCPServer;
 | 
			
		||||
    nsapi_protocol_t get_proto() override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,7 +39,6 @@
 | 
			
		|||
#include "netsocket/Socket.h"
 | 
			
		||||
#include "netsocket/UDPSocket.h"
 | 
			
		||||
#include "netsocket/TCPSocket.h"
 | 
			
		||||
#include "netsocket/TCPServer.h"
 | 
			
		||||
#include "netsocket/TLSSocketWrapper.h"
 | 
			
		||||
#include "netsocket/DTLSSocketWrapper.h"
 | 
			
		||||
#include "netsocket/TLSSocket.h"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue