CORDET Framework - C2 Implementation
|
Implementation of interface to server socket. More...
Go to the source code of this file.
Functions | |
static void * | acceptThreadEntry (void *ptr) |
Entry point for the thread which waits for the incoming connection from the client socket. More... | |
static void | serverSocketPoll (int nsockfd, unsigned char *buffer) |
Poll the socket for data from one of the two clients. More... | |
static CrFwBool_t | serverSocketIsPcktAvail (CrFwDestSrc_t src, int nsockfd, unsigned char *buffer) |
Check whether a packet from the argument source is available. More... | |
static CrFwPckt_t | serverSocketPcktCollect (CrFwDestSrc_t src, unsigned char *buffer) |
Collect a packet from the argument source. More... | |
void | CrDaServerSocketInitAction (FwPrDesc_t prDesc) |
Initialization action for the server socket. More... | |
void | CrDaServerSocketShutdownAction (FwSmDesc_t smDesc) |
Shutdown action for the server socket. More... | |
void | CrDaServerSocketConfigAction (FwPrDesc_t prDesc) |
Configuration action for the server socket. More... | |
void | CrDaServerSocketPoll () |
Poll the server socket to check whether a new packet has arrived from either client. More... | |
CrFwPckt_t | CrDaServerSocketPcktCollect (CrFwDestSrc_t src) |
Function implementing the Packet Collect Operation for the server socket. More... | |
CrFwBool_t | CrDaServerSocketIsPcktAvail (CrFwDestSrc_t src) |
Function implementing the Packet Available Check Operation for the server socket. More... | |
CrFwBool_t | CrDaServerSocketPcktHandover (CrFwPckt_t pckt) |
Function implementing the hand-over operation for the server socket. More... | |
void | CrDaServerSocketInitCheck (FwPrDesc_t prDesc) |
Initialization check for the server socket. More... | |
void | CrDaServerSocketConfigCheck (FwPrDesc_t prDesc) |
Configuration check for the server socket. More... | |
void | CrDaServerSocketSetPort (int n) |
Set the port number for the socket. More... | |
Variables | |
static int | portno = 0 |
Set the port number (must be same as the port number specified in CrDaServerSocket.c | |
static int | sockfd = 0 |
The file descriptors for the socket. | |
static int | newsockfd [2] |
The file descriptors for the client sockets. | |
static struct sockaddr_in | cli_addr |
Socket variable. | |
static socklen_t | clilen |
Socket variable. | |
static int | pcktMaxLength |
The maximum size of an incoming packet. | |
static unsigned char * | readBuffer [2] |
The Read Buffers. | |
Implementation of interface to server socket.
This file is part of the CORDET Framework.
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
For information on alternative licensing, please contact P&P Software GmbH.
Definition in file CrDemoSlave2/CrDaServerSocket.c.
|
static |
Entry point for the thread which waits for the incoming connection from the client socket.
ptr | unused argument (required with compatibility with pthread create function) |
Definition at line 338 of file CrDemoSlave2/CrDaServerSocket.c.
void CrDaServerSocketConfigAction | ( | FwPrDesc_t | prDesc | ) |
Configuration action for the server socket.
This action clears the Read Buffer and executes the Configuration Action of the base InStream/OutStream.
prDesc | the configuration procedure descriptor. |
Definition at line 185 of file CrDemoSlave2/CrDaServerSocket.c.
void CrDaServerSocketConfigCheck | ( | FwPrDesc_t | prDesc | ) |
Configuration check for the server socket.
The check is successful if the connection from the matching client socket has been successfully accepted.
prDesc | the initialization procedure descriptor. |
Definition at line 391 of file CrDemoSlave2/CrDaServerSocket.c.
void CrDaServerSocketInitAction | ( | FwPrDesc_t | prDesc | ) |
Initialization action for the server socket.
If the server socket has already been initialized, this function calls the Initialization Action of the base InStream/OutStream and then returns. If the server socket has not yet been initialized, this action:
The function sets the outcome to "success" if all these operations are successful.
prDesc | the initialization procedure descriptor. |
Definition at line 106 of file CrDemoSlave2/CrDaServerSocket.c.
void CrDaServerSocketInitCheck | ( | FwPrDesc_t | prDesc | ) |
Initialization check for the server socket.
The check is successful if the port number has been set to a value larger than 2000.
prDesc | the initialization procedure descriptor. |
Definition at line 379 of file CrDemoSlave2/CrDaServerSocket.c.
CrFwBool_t CrDaServerSocketIsPcktAvail | ( | CrFwDestSrc_t | pcktSrc | ) |
Function implementing the Packet Available Check Operation for the server socket.
This function implements the following logic:
pcktSrc
, the function returns 1.pcktSrc
, the function performs a non-blocking read on the socket.pcktSrc
, the function stores it in the Read Buffer and then returns 1.pcktSrc
, the above logic is applied to the second Read Buffer.pcktSrc | the source associated to the InStream |
Definition at line 270 of file CrDemoSlave2/CrDaServerSocket.c.
CrFwPckt_t CrDaServerSocketPcktCollect | ( | CrFwDestSrc_t | pcktSrc | ) |
Function implementing the Packet Collect Operation for the server socket.
If the packet in the first Read Buffer has a source attribute equal to pcktSrc
, this function:
CrFwPcktMake
If the packet in the first Read Buffer has a source attribute different from pcktSrc
, the same logic as above is applied to the second Read Buffer. If neither Read Buffer holds a packet from pcktSrc
, this function returns NULL. Note that the logic of the server socket module guarantees that at least one Read Buffer will always be full when this function is called.
pcktSrc | the source associated to the InStream |
Definition at line 238 of file CrDemoSlave2/CrDaServerSocket.c.
CrFwBool_t CrDaServerSocketPcktHandover | ( | CrFwPckt_t | pckt | ) |
Function implementing the hand-over operation for the server socket.
This function performs a non-blocking write on the socket and, if it succeeds, it returns 1; otherwise, it returns 0. the client socket to which the write operation is made depends on the destination of the argument packet.
pckt | the packet to be written to the socket |
Definition at line 315 of file CrDemoSlave2/CrDaServerSocket.c.
void CrDaServerSocketPoll | ( | ) |
Poll the server socket to check whether a new packet has arrived from either client.
This function should be called periodically by an external scheduler. If there is a pending packet (i.e. if a Read Buffer is full), its source is determined, and then function CrFwInStreamPcktAvail
is called on the InStream associated to that packet source. If there is no pending packet, a non-blocking read is performed from each client to check whether a packet is available from that client. If a packet is available, it is placed into the Read Buffer, its source is determined, and then function CrFwInStreamPcktAvail
is called on the InStream associated to that packet source.
Definition at line 199 of file CrDemoSlave2/CrDaServerSocket.c.
void CrDaServerSocketSetPort | ( | int | n | ) |
Set the port number for the socket.
The port number must be an integer greater than 2000.
n | the port number. |
Definition at line 406 of file CrDemoSlave2/CrDaServerSocket.c.
void CrDaServerSocketShutdownAction | ( | FwSmDesc_t | smDesc | ) |
Shutdown action for the server socket.
If the server socket has already been shut down, this function calls the Shutdown Action of the base InStream/OutStream and then returns. If the client socket has not yet been shut down, this action executes the Shutdown Action of the base OutStream/InStream and then closes the socket.
smDesc | the OutStream State Machine descriptor (this parameter is not used). |
Definition at line 166 of file CrDemoSlave2/CrDaServerSocket.c.
|
static |
Check whether a packet from the argument source is available.
src | the source |
nsockfd | the socket which is to be polled |
buffer | the Read Buffer associated to the client which is to be polled |
Definition at line 281 of file CrDemoSlave2/CrDaServerSocket.c.
|
static |
Collect a packet from the argument source.
src | the source |
buffer | the Read Buffer associated to the client from which the packet is read |
Definition at line 252 of file CrDemoSlave2/CrDaServerSocket.c.
|
static |
Poll the socket for data from one of the two clients.
nsockfd | the socket which is to be polled |
buffer | the Read Buffer associated to the client which is to be polled |
Definition at line 205 of file CrDemoSlave2/CrDaServerSocket.c.