LCOV - code coverage report
Current view: top level - cpp2ethernet/include/tcp/socket - AbstractServerSocket.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 6 6 100.0 %
Date: 2025-08-28 06:39:11 Functions: 0 0 -

          Line data    Source code
       1             : // Copyright 2025 Accenture.
       2             : 
       3             : #pragma once
       4             : 
       5             : #include "tcp/socket/ISocketProvidingConnectionListener.h"
       6             : 
       7             : #include <platform/estdint.h>
       8             : 
       9             : /**
      10             :  * contains TCP abstraction layer related code
      11             :  * \namespace tcp
      12             :  */
      13             : namespace tcp
      14             : {
      15             : /**
      16             :  * Abstract base class for server sockets.
      17             :  *
      18             :  * An AbstractServerSocket is the base class for server sockets that may
      19             :  * open a specific port. To accept incoming connections the AbstractServerSocket
      20             :  * needs a ISocketProvidingConnectionListener. On a incoming connection request
      21             :  * the AbstractServerSocket requests an AbstractSocket object from the
      22             :  * ISocketProvidingConnectionListener to bind the connection to via its
      23             :  * getSocket() method. In case of success the listeners connectionAccepted()
      24             :  * method is called passing the bound AbstractSocket to the application.
      25             :  *
      26             :  * \see   ISocketProvidingConnectionListener
      27             :  */
      28             : class AbstractServerSocket
      29             : {
      30             : public:
      31             :     AbstractServerSocket();
      32             :     AbstractServerSocket(AbstractServerSocket const&)            = delete;
      33             :     AbstractServerSocket& operator=(AbstractServerSocket const&) = delete;
      34             : 
      35             :     // [AbstractServerSocket]
      36             :     /**
      37             :      * constructor taking the AbstractServerSockets port
      38             :      * \param   port   port of socket
      39             :      * \param   providingListener  ISocketProvidingConnectionListener which
      40             :      *          provides the AbstractServerSocket with AbstractSocket objects
      41             :      *          and gets notified when a connection is successfully established
      42             :      *
      43             :      * As long as the ISocketProvidingConnectionListener returns valid pointers
      44             :      * to AbstractSocket objects connections are accpeted and delegated to the
      45             :      * ISocketProvidingConnectionListener. When NULL is returned, the connection
      46             :      * is refused.
      47             :      */
      48             :     AbstractServerSocket(uint16_t port, ISocketProvidingConnectionListener& providingListener);
      49             : 
      50             :     /**
      51             :      * \return  port the AbstractServerSocket is listening for
      52             :      */
      53           2 :     uint16_t getLocalPort() const { return _port; }
      54             : 
      55           1 :     void setPort(uint16_t const port) { _port = port; }
      56             : 
      57             :     /**
      58             :      * accepts a connection to the AbstractServerSockets port
      59             :      */
      60             :     virtual bool accept() = 0;
      61             : 
      62             :     /**
      63             :      * Binds this server socket to a given netif.
      64             :      */
      65             :     virtual bool bind(ip::IPAddress const& localIpAddress, uint16_t port) = 0;
      66             : 
      67             :     /**
      68             :      * closes the accepted port
      69             :      */
      70             :     virtual void close() = 0;
      71             : 
      72             :     virtual bool isClosed() const = 0;
      73             : 
      74             :     // [AbstractServerSocket]
      75             : 
      76           1 :     void setSocketProvidingConnectionListener(ISocketProvidingConnectionListener& listener)
      77             :     {
      78           1 :         _socketProvidingConnectionListener = &listener;
      79             :     }
      80             : 
      81           1 :     ISocketProvidingConnectionListener& getSocketProvidingConnectionListener() const
      82             :     {
      83           1 :         return *_socketProvidingConnectionListener;
      84             :     }
      85             : 
      86             : protected:
      87             :     /** AbstractServerSockets port */
      88             :     uint16_t _port;
      89             :     /** reference to ISocketProvidingConnectionListener */
      90             :     ISocketProvidingConnectionListener* _socketProvidingConnectionListener;
      91             : };
      92             : 
      93             : } // namespace tcp

Generated by: LCOV version 1.14