#include "config.h"
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/un.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
#include "misc.h"
#include "pcsclite.h"
#include "winscard.h"
#include "debuglog.h"
#include "winscard_msg.h"
#include "sys_generic.h"
Go to the source code of this file.
Functions | |
static int | SHMProcessCommonChannelRequest (PDWORD pdwClientID) |
Accepts a Client connection. | |
INTERNAL int | SHMInitializeCommonSegment (void) |
Prepares the communication channel used by the server to talk to the clients. | |
INTERNAL int | SHMProcessEventsServer (PDWORD pdwClientID, int blocktime) |
Looks for messages sent by clients. | |
INTERNAL int | SHMProcessEventsContext (PDWORD pdwClientID, psharedSegmentMsg msgStruct, int blocktime) |
Called by ContextThread() . | |
Variables | |
static int | commonSocket = 0 |
Socket to a file, used for clients-server comminication. | |
char | AraKiri |
char | ReCheckSerialReaders |
A file based socket (commonSocket
) is used to send/receive only messages among clients and server.
The messages' data are passed throw a memory mapped file: sharedSegmentMsg
.
Definition in file winscard_msg_srv.c.
INTERNAL int SHMInitializeCommonSegment | ( | void | ) |
Prepares the communication channel used by the server to talk to the clients.
This is called by the server to create a socket for local IPC with the clients. The socket is associated to the file PCSCLITE_CSOCK_NAME
. Each client will open a connection to this socket.
0 | Success | |
-1 | Can not create the socket. | |
-1 | Can not bind the socket to the file PCSCLITE_CSOCK_NAME . | |
-1 | Can not put the socket in listen mode. |
Definition at line 110 of file winscard_msg_srv.c.
References commonSocket, Log2, PCSCLITE_CSOCK_NAME, SHMCleanupSharedSegment(), SYS_Chmod(), and SYS_Unlink().
Referenced by SVCServiceRunLoop().
static int SHMProcessCommonChannelRequest | ( | PDWORD | pdwClientID | ) | [static] |
Accepts a Client connection.
Called by SHMProcessEventsServer()
.
[out] | pdwClientID | Connection ID used to reference the Client. |
0 | Success. | |
-1 | Can not establish the connection. | |
-1 | Can not set the connection to non-blocking mode. |
Definition at line 64 of file winscard_msg_srv.c.
References commonSocket, Log2, and SYS_CloseFile().
Referenced by SHMProcessEventsServer().
INTERNAL int SHMProcessEventsServer | ( | PDWORD | pdwClientID, | |
int | blocktime | |||
) |
Looks for messages sent by clients.
This is called by the Server's function SVCServiceRunLoop()
.
[out] | pdwClientID | Connection ID used to reference the Client. |
[in] | blocktime | Timeout (not used). |
0 | Success. | |
-1 | Error accessing the communication channel. | |
-1 | Can not set the connection to non-blocking mode. | |
2 | Timeout. |
Definition at line 168 of file winscard_msg_srv.c.
References commonSocket, Log1, Log2, and SHMProcessCommonChannelRequest().
Referenced by SVCServiceRunLoop().