![]() |
F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
|
#include <Drv/TcpServer/TcpServerComponentImpl.hpp>
Public Member Functions | |
TcpServerComponentImpl (const char *const compName) | |
construct the TcpServer component. More... | |
~TcpServerComponentImpl () | |
Destroy the component. More... | |
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. More... | |
bool | isStarted () |
is started More... | |
SocketIpStatus | startup () |
startup the server socket for communications More... | |
void | terminate () |
terminate the server socket More... | |
U16 | getListenPort () |
get the port being listened on More... | |
![]() | |
void | init (FwEnumStoreType instance=0) |
Initialize TcpServerComponentBase object. More... | |
Drv::InputByteStreamSendPort * | get_send_InputPort (FwIndexType portNum) |
void | set_allocate_OutputPort (FwIndexType portNum, Fw::InputBufferGetPort *port) |
Connect port to allocate[portNum]. More... | |
void | set_deallocate_OutputPort (FwIndexType portNum, Fw::InputBufferSendPort *port) |
Connect port to deallocate[portNum]. More... | |
void | set_ready_OutputPort (FwIndexType portNum, Drv::InputByteStreamReadyPort *port) |
Connect port to ready[portNum]. More... | |
void | set_recv_OutputPort (FwIndexType portNum, Drv::InputByteStreamRecvPort *port) |
Connect port to recv[portNum]. More... | |
![]() | |
void | setIdBase (const U32) |
Set the ID base. More... | |
U32 | getIdBase () const |
![]() | |
SocketComponentHelper () | |
constructs the socket read task More... | |
virtual | ~SocketComponentHelper () |
destructor of the socket read task More... | |
void | start (const Fw::StringBase &name, const Os::Task::ParamType priority=Os::Task::TASK_DEFAULT, const Os::Task::ParamType stack=Os::Task::TASK_DEFAULT, const Os::Task::ParamType cpuAffinity=Os::Task::TASK_DEFAULT) |
start the socket read task to start producing data More... | |
SocketIpStatus | open () |
open the socket for communications More... | |
bool | isOpened () |
check if IP socket has previously been opened More... | |
void | setAutomaticOpen (bool auto_open) |
set socket to automatically open connections when true, or not when false More... | |
SocketIpStatus | send (const U8 *const data, const U32 size) |
send data to the IP socket from the given buffer More... | |
SocketIpStatus | recv (U8 *data, U32 &size) |
receive data from the IP socket from the given buffer More... | |
void | close () |
close the socket communications More... | |
void | shutdown () |
shutdown the socket communications More... | |
bool | running () |
is the read loop running More... | |
void | stop () |
stop the socket read task and close the associated socket. More... | |
Os::Task::Status | join () |
joins to the stopping read task to wait for it to close More... | |
Protected Member Functions | |
IpSocket & | getSocketHandler () override |
returns a reference to the socket handler More... | |
Fw::Buffer | getBuffer () override |
returns a buffer to fill with data More... | |
void | sendBuffer (Fw::Buffer buffer, SocketIpStatus status) override |
sends a buffer to be filled with data More... | |
void | connected () override |
called when the IPv4 system has been connected More... | |
void | readLoop () override |
read from the socket, overridden to start and terminate the server socket More... | |
![]() | |
TcpServerComponentBase (const char *compName="") | |
Construct TcpServerComponentBase object. More... | |
virtual | ~TcpServerComponentBase () |
Destroy TcpServerComponentBase object. More... | |
FwIndexType | getNum_send_InputPorts () const |
FwIndexType | getNum_allocate_OutputPorts () const |
FwIndexType | getNum_deallocate_OutputPorts () const |
FwIndexType | getNum_ready_OutputPorts () const |
FwIndexType | getNum_recv_OutputPorts () const |
bool | isConnected_allocate_OutputPort (FwIndexType portNum) |
bool | isConnected_deallocate_OutputPort (FwIndexType portNum) |
bool | isConnected_ready_OutputPort (FwIndexType portNum) |
bool | isConnected_recv_OutputPort (FwIndexType portNum) |
Drv::SendStatus | send_handlerBase (FwIndexType portNum, Fw::Buffer &sendBuffer) |
Handler base-class function for input port send. More... | |
Fw::Buffer | allocate_out (FwIndexType portNum, U32 size) |
Invoke output port allocate. More... | |
void | deallocate_out (FwIndexType portNum, Fw::Buffer &fwBuffer) |
Invoke output port deallocate. More... | |
void | ready_out (FwIndexType portNum) |
Invoke output port ready. More... | |
void | recv_out (FwIndexType portNum, Fw::Buffer &recvBuffer, const Drv::RecvStatus &recvStatus) |
Invoke output port recv. More... | |
virtual void | lock () |
Lock the guarded mutex. More... | |
virtual void | unLock () |
Unlock the guarded mutex. More... | |
![]() | |
PassiveComponentBase (const char *name) | |
Named constructor. More... | |
virtual | ~PassiveComponentBase () |
Destructor. More... | |
void | init (NATIVE_INT_TYPE instance) |
Initialization function. More... | |
NATIVE_INT_TYPE | getInstance () const |
![]() | |
ObjBase (const char *name) | |
ObjBase constructor. More... | |
virtual | ~ObjBase () |
Destructor. More... | |
void | init () |
Object initializer. More... | |
Additional Inherited Members | |
![]() | |
enum | OpenState { NOT_OPEN, OPENING, OPEN, SKIP } |
![]() | |
enum | { NUM_SEND_INPUT_PORTS = 1 } |
Enumerations for numbers of typed input ports. More... | |
enum | { NUM_ALLOCATE_OUTPUT_PORTS = 1, NUM_DEALLOCATE_OUTPUT_PORTS = 1, NUM_READY_OUTPUT_PORTS = 1, NUM_RECV_OUTPUT_PORTS = 1 } |
Enumerations for numbers of typed output ports. More... | |
![]() | |
static void | readTask (void *pointer) |
a task designed to read from the socket and output incoming data More... | |
![]() | |
Os::Task | m_task |
Os::Mutex | m_lock |
SocketDescriptor | m_descriptor |
bool | m_reopen = true |
Force reopen on disconnect. More... | |
bool | m_stop = true |
Stops the task when set to true. More... | |
OpenState | m_open = OpenState::NOT_OPEN |
Have we successfully opened. More... | |
Definition at line 24 of file TcpServerComponentImpl.hpp.
Drv::TcpServerComponentImpl::TcpServerComponentImpl | ( | const char *const | compName | ) |
construct the TcpServer component.
compName | name of this component |
Definition at line 25 of file TcpServerComponentImpl.cpp.
Drv::TcpServerComponentImpl::~TcpServerComponentImpl | ( | ) |
Destroy the component.
Definition at line 43 of file TcpServerComponentImpl.cpp.
SocketIpStatus Drv::TcpServerComponentImpl::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.
The TcpServerComponent needs to listen for a remote TCP client. This call configures the hostname, port and send timeouts for that socket connection. This call should be performed on system startup before recv or send are called. Note: hostname must be a dot-notation IP address of the form "x.x.x.x". DNS translation is left up to the user.
hostname | ip address of remote tcp server in the form x.x.x.x |
port | port of remote tcp server |
send_timeout_seconds | send timeout seconds component. Defaults to: SOCKET_TIMEOUT_SECONDS |
send_timeout_microseconds | send timeout microseconds component. Must be less than 1000000. Defaults to: SOCKET_TIMEOUT_MICROSECONDS |
buffer_size | size of the buffer to be allocated. Defaults to 1024. |
Definition at line 28 of file TcpServerComponentImpl.cpp.
|
overrideprotectedvirtual |
called when the IPv4 system has been connected
Implements Drv::SocketComponentHelper.
Definition at line 75 of file TcpServerComponentImpl.cpp.
|
overrideprotectedvirtual |
returns a buffer to fill with data
Gets a reference to a buffer to fill with data. This allows the component to determine how to provide a buffer and the socket read task just fills said buffer.
Implements Drv::SocketComponentHelper.
Definition at line 57 of file TcpServerComponentImpl.cpp.
U16 Drv::TcpServerComponentImpl::getListenPort | ( | ) |
get the port being listened on
Most useful when listen was configured to use port "0", this will return the port used for listening after a port has been determined. Will return 0 if the connection has not been setup.
Definition at line 49 of file TcpServerComponentImpl.cpp.
|
overrideprotectedvirtual |
returns a reference to the socket handler
Gets a reference to the current socket handler in order to operate generically on the IpSocket instance. Used for receive, and open calls. This socket handler will be a TcpServer.
Implements Drv::SocketComponentHelper.
Definition at line 53 of file TcpServerComponentImpl.cpp.
bool Drv::TcpServerComponentImpl::isStarted | ( | ) |
is started
Definition at line 81 of file TcpServerComponentImpl.cpp.
|
overrideprotectedvirtual |
read from the socket, overridden to start and terminate the server socket
Reimplemented from Drv::SocketComponentHelper.
Definition at line 102 of file TcpServerComponentImpl.cpp.
|
overrideprotectedvirtual |
sends a buffer to be filled with data
Sends the buffer gotten by getBuffer that has now been filled with data. This is used to delegate to the component how to send back the buffer. Ignores buffers with error status error.
Implements Drv::SocketComponentHelper.
Definition at line 61 of file TcpServerComponentImpl.cpp.
SocketIpStatus Drv::TcpServerComponentImpl::startup | ( | ) |
startup the server socket for communications
Start up the server socket by listening on a port. Note: does not accept clients, this is done in open to facilitate re-connection of clients.
Definition at line 86 of file TcpServerComponentImpl.cpp.
void Drv::TcpServerComponentImpl::terminate | ( | ) |
terminate the server socket
Close the server socket. Should be done after all clients are shutdown and closed.
Definition at line 96 of file TcpServerComponentImpl.cpp.