CORDET Framework - C2 Implementation
CrFwServerSocket.c File Reference

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...
 
void CrFwServerSocketInitAction (FwPrDesc_t prDesc)
 Initialization action for the server socket. More...
 
void CrFwServerSocketShutdownAction (FwSmDesc_t smDesc)
 Shutdown action for the server socket. More...
 
void CrFwServerSocketConfigAction (FwPrDesc_t prDesc)
 Configuration action for the server socket. More...
 
void CrFwServerSocketPoll ()
 Poll the server socket to check whether a new packet has arrived. More...
 
CrFwPckt_t CrFwServerSocketPcktCollect (CrFwDestSrc_t nofPcktSrc, CrFwDestSrc_t *pcktSrcs)
 Function implementing the Packet Collect Operation for the server socket. More...
 
CrFwBool_t CrFwServerSocketIsPcktAvail (CrFwDestSrc_t nofPcktSrc, CrFwDestSrc_t *pcktSrcs)
 Function implementing the Packet Available Check Operation for the server socket. More...
 
CrFwBool_t CrFwServerSocketPcktHandover (CrFwPckt_t pckt)
 Function implementing the hand-over operation for the server socket. More...
 
void CrFwServerSocketInitCheck (FwPrDesc_t prDesc)
 Initialization check for the server socket. More...
 
void CrFwServerSocketConfigCheck (FwPrDesc_t prDesc)
 Configuration check for the server socket. More...
 
void CrFwServerSocketSetPort (unsigned short n)
 Set the port number for the socket. More...
 

Variables

static unsigned short portno = 0
 Set the port number (must be same as the port number specified in CrFwServerSocket.c
 
static int sockfd = 0
 The file descriptors for the socket.
 
static int newsockfd
 The file descriptors for the socket.
 
static struct sockaddr_in cli_addr
 Socket variable.
 
static socklen_t clilen
 Socket variable.
 
static unsigned int pcktMaxLength
 The maximum size of an incoming packet.
 
static unsigned char * readBuffer
 The Read Buffer.
 

Detailed Description

Implementation of interface to server socket.

Author
Vaclav Cechticky vacla.nosp@m.v.ce.nosp@m.chtic.nosp@m.ky@p.nosp@m.np-so.nosp@m.ftwa.nosp@m.re.co.nosp@m.m
Alessandro Pasetti paset.nosp@m.ti@p.nosp@m.np-so.nosp@m.ftwa.nosp@m.re.co.nosp@m.m

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 CrFwServerSocket.c.

Function Documentation

◆ acceptThreadEntry()

static void * acceptThreadEntry ( void *  ptr)
static

Entry point for the thread which waits for the incoming connection from the client socket.

Parameters
ptrunused argument (required with compatibility with pthread create function)

Definition at line 280 of file CrFwServerSocket.c.

◆ CrFwServerSocketConfigAction()

void CrFwServerSocketConfigAction ( 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.

Parameters
prDescthe configuration procedure descriptor.

Definition at line 161 of file CrFwServerSocket.c.

◆ CrFwServerSocketConfigCheck()

void CrFwServerSocketConfigCheck ( 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.

Parameters
prDescthe initialization procedure descriptor.

Definition at line 316 of file CrFwServerSocket.c.

◆ CrFwServerSocketInitAction()

void CrFwServerSocketInitAction ( 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:

  • creates and binds the socket
  • start listening on the socket
  • spawns a thread which waits for an incoming connection from a matching client socket
  • execute the Initialization Action of the base InStream/OutStream

The function sets the outcome to "success" if all these operations are successful.

Parameters
prDescthe initialization procedure descriptor.

Definition at line 82 of file CrFwServerSocket.c.

◆ CrFwServerSocketInitCheck()

void CrFwServerSocketInitCheck ( 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.

Parameters
prDescthe initialization procedure descriptor.

Definition at line 304 of file CrFwServerSocket.c.

◆ CrFwServerSocketIsPcktAvail()

CrFwBool_t CrFwServerSocketIsPcktAvail ( CrFwDestSrc_t  nofPcktSrc,
CrFwDestSrc_t pcktSrcs 
)

Function implementing the Packet Available Check Operation for the server socket.

This function implements the following logic:

  • The function begins by checking the Read Buffer.
  • If it is full and the source attribute of the packet it contains is equal to one of the sources in pcktSrcs, the function returns 1.
  • If the Read Buffer is not full or it is full but the source attribute of the packet it contains is not equal to any of the packet sources in pcktSrcs, the function performs a non-blocking read on the socket.
  • If the read operation returns nothing or returns a packet with a source attribute other than those in pcktSrcs, the function returns 0.
  • If the read operation returns a packet with a source attribute equal to one of the packet sources in pcktSrcs, the function stores it in the Read Buffer and then returns 1.
Parameters
nofPcktSrcthe number of packet sources
pcktSrcsthe sources associated to the InStream
Returns
the value of a predefined flag

Definition at line 227 of file CrFwServerSocket.c.

◆ CrFwServerSocketPcktCollect()

CrFwPckt_t CrFwServerSocketPcktCollect ( CrFwDestSrc_t  nofPcktSrc,
CrFwDestSrc_t pcktSrcs 
)

Function implementing the Packet Collect Operation for the server socket.

If the packet in the Read Buffer has a source attribute equal to one of the packet sources in pcktSrcs, this function:

  • creates a packet instance through a call to CrFwPcktMake
  • copies the content of the Read Buffer into the newly created packet instance
  • clears the Read Buffer
  • returns the packet instance

If the Read Buffer holds a packet from a source other then those in pcktSrcs, this function returns NULL. Note that the logic of the server socket module guarantees that the Read Buffer will always be full when this function is called.

Parameters
nofPcktSrcthe number of packet sources
pcktSrcsthe sources associated to the InStream
Returns
the packet

Definition at line 207 of file CrFwServerSocket.c.

◆ CrFwServerSocketPcktHandover()

CrFwBool_t CrFwServerSocketPcktHandover ( 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.

Parameters
pcktthe packet to be written to the socket
Returns
1 if the packet was successfully written to the socket; 0 otherwise.

Definition at line 262 of file CrFwServerSocket.c.

◆ CrFwServerSocketPoll()

void CrFwServerSocketPoll ( )

Poll the server socket to check whether a new packet has arrived.

This function should be called periodically by an external scheduler. If there is a pending packet (i.e. of the 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 (i.e. if the Read Buffer is empty), a non-blocking read is performed on the socket to check whether a packet is available at the socket. 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. This implementation is intended for use with the test cases of CrFwSocketTestCase.h.

Definition at line 174 of file CrFwServerSocket.c.

◆ CrFwServerSocketSetPort()

void CrFwServerSocketSetPort ( unsigned short  n)

Set the port number for the socket.

The port number must be an integer greater than 2000.

Parameters
nthe port number.

Definition at line 328 of file CrFwServerSocket.c.

◆ CrFwServerSocketShutdownAction()

void CrFwServerSocketShutdownAction ( 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.

Parameters
smDescthe OutStream State Machine descriptor (this parameter is not used).

Definition at line 141 of file CrFwServerSocket.c.

P&P Software GmbH, Copyright 2012-2013, All Rights Reserved