#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 "pcscd.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 171 of file winscard_msg_srv.c.
References commonSocket, Log1, Log2, and SHMProcessCommonChannelRequest().
Referenced by SVCServiceRunLoop().
1.4.7