F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
TcpServerComponentImpl.hpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title TcpServerComponentImpl.hpp
3 // \author mstarch
4 // \brief hpp file for TcpServerComponentImpl component implementation class
5 //
6 // \copyright
7 // Copyright 2009-2020, by the California Institute of Technology.
8 // ALL RIGHTS RESERVED. United States Government Sponsorship
9 // acknowledged.
10 //
11 // ======================================================================
12 
13 #ifndef TcpServerComponentImpl_HPP
14 #define TcpServerComponentImpl_HPP
15 
16 #include <config/IpCfg.hpp>
17 #include <Drv/Ip/IpSocket.hpp>
21 
22 namespace Drv {
23 
25 
26  friend class TcpServerTester;
27 
28  public:
29  // ----------------------------------------------------------------------
30  // Construction, initialization, and destruction
31  // ----------------------------------------------------------------------
32 
37  TcpServerComponentImpl(const char* const compName);
38 
43 
44  // ----------------------------------------------------------------------
45  // Helper methods to start and stop socket
46  // ----------------------------------------------------------------------
47 
64  SocketIpStatus configure(const char* hostname,
65  const U16 port,
66  const U32 send_timeout_seconds = SOCKET_SEND_TIMEOUT_SECONDS,
67  const U32 send_timeout_microseconds = SOCKET_SEND_TIMEOUT_MICROSECONDS,
68  FwSizeType buffer_size = 1024);
69 
73  bool isStarted();
74 
82 
88  void terminate();
89 
98  U16 getListenPort();
99 
100  protected:
101  // ----------------------------------------------------------------------
102  // Implementations for socket read task virtual methods
103  // ----------------------------------------------------------------------
104 
113  IpSocket& getSocketHandler() override;
114 
123  Fw::Buffer getBuffer() override;
124 
133  void sendBuffer(Fw::Buffer buffer, SocketIpStatus status) override;
134 
138  void connected() override;
139 
143  void readLoop() override;
144 
145  private:
146 
147  // ----------------------------------------------------------------------
148  // Handler implementations for user-defined typed input ports
149  // ----------------------------------------------------------------------
150 
165  void send_handler(const FwIndexType portNum, Fw::Buffer& fwBuffer) override;
166 
170  void recvReturnIn_handler(FwIndexType portNum,
171  Fw::Buffer& fwBuffer
172  ) override;
173 
174  Drv::TcpServerSocket m_socket;
175 
176  FwSizeType m_allocation_size;
177 };
178 
179 } // end namespace Drv
180 
181 #endif // end TcpServerComponentImpl
Auto-generated base for TcpServer component.
void sendBuffer(Fw::Buffer buffer, SocketIpStatus status) override
sends a buffer to be filled with data
PlatformSizeType FwSizeType
IpSocket & getSocketHandler() override
returns a reference to the socket handler
Helper for setting up Tcp using Berkeley sockets as a server.
supports a task to read a given socket adaptation
void readLoop() override
read from the socket, overridden to start and terminate the server socket
SocketIpStatus configure(const char *hostname, const U16 port, const U32 send_timeout_seconds=SOCKET_SEND_TIMEOUT_SECONDS, const U32 send_timeout_microseconds=SOCKET_SEND_TIMEOUT_MICROSECONDS, FwSizeType buffer_size=1024)
Configures the TcpServer settings but does not open the connection.
void connected() override
called when the IPv4 system has been connected
TcpServerComponentImpl(const char *const compName)
construct the TcpServer component.
void terminate()
terminate the server socket
~TcpServerComponentImpl()
Destroy the component.
U16 getListenPort()
get the port being listened on
PlatformIndexType FwIndexType
SocketIpStatus
Status enumeration for socket return values.
Definition: IpSocket.hpp:29
Helper base-class for setting up Berkeley sockets.
Definition: IpSocket.hpp:57
Fw::Buffer getBuffer() override
returns a buffer to fill with data
SocketIpStatus startup()
startup the server socket for communications