pcsc-lite 1.9.5
|
This demarshalls functions over the message queue and keeps track of clients and their handles. More...
#include "config.h"
#include <time.h>
#include <stdio.h>
#include <string.h>
#include <stddef.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include "pcscd.h"
#include "winscard.h"
#include "debuglog.h"
#include "winscard_msg.h"
#include "winscard_svc.h"
#include "sys_generic.h"
#include "utils.h"
#include "readerfactory.h"
#include "eventhandler.h"
#include "simclist.h"
#include "auth.h"
Go to the source code of this file.
Data Structures | |
struct | _psContext |
Macros | |
#define | READ_BODY(v) |
#define | WRITE_BODY(v) WRITE_BODY_WITH_COMMAND(CommandsText[header.command], v) |
#define | WRITE_BODY_WITH_COMMAND(command, v) |
Typedefs | |
typedef struct _psContext | SCONTEXT |
Functions | |
static LONG | MSGCheckHandleAssociation (SCARDHANDLE, SCONTEXT *) |
static LONG | MSGAddContext (SCARDCONTEXT, SCONTEXT *) |
static LONG | MSGRemoveContext (SCARDCONTEXT, SCONTEXT *) |
static LONG | MSGAddHandle (SCARDCONTEXT, SCARDHANDLE, SCONTEXT *) |
static LONG | MSGRemoveHandle (SCARDHANDLE, SCONTEXT *) |
static void | MSGCleanupClient (SCONTEXT *) |
static void * | ContextThread (LPVOID pdwIndex) |
static int | contextsListhContext_seeker (const void *el, const void *key) |
LONG | ContextsInitialize (int customMaxThreadCounter, int customMaxThreadCardHandles) |
void | ContextsDeinitialize (void) |
LONG | CreateContextThread (uint32_t *pdwClientID) |
Creates threads to handle messages received from Clients. | |
LONG | MSGSignalClient (uint32_t filedes, LONG rv) |
LONG | MSGSendReaderStates (uint32_t filedes) |
Variables | |
char | AutoExit |
Represents an Application Context on the Server side. | |
static int | contextMaxThreadCounter = PCSC_MAX_CONTEXT_THREADS |
static int | contextMaxCardHandles = PCSC_MAX_CONTEXT_CARD_HANDLES |
static list_t | contextsList |
Context tracking list. | |
pthread_mutex_t | contextsList_lock |
lock for the above list | |
READER_STATE | readerStates [PCSCLITE_MAX_READERS_CONTEXTS] |
static const char * | CommandsText [] |
Handles messages received from Clients. | |
This demarshalls functions over the message queue and keeps track of clients and their handles.
Each Client message is deald by creating a thread (CreateContextThread
). The thread establishes reands and demarshalls the message and calls the appropriate function to threat it.
Definition in file winscard_svc.c.
Definition at line 309 of file winscard_svc.c.
#define WRITE_BODY | ( | v | ) | WRITE_BODY_WITH_COMMAND(CommandsText[header.command], v) |
Definition at line 320 of file winscard_svc.c.
Definition at line 322 of file winscard_svc.c.
Definition at line 89 of file winscard_svc.c.
Definition at line 148 of file winscard_svc.c.
Definition at line 118 of file winscard_svc.c.
Definition at line 102 of file winscard_svc.c.
Definition at line 328 of file winscard_svc.c.
LONG CreateContextThread | ( | uint32_t * | pdwClientID | ) |
Creates threads to handle messages received from Clients.
[in] | pdwClientID | Connection ID used to reference the Client. |
SCARD_S_SUCCESS | Success. |
SCARD_F_INTERNAL_ERROR | Exceded the maximum number of simultaneous Application Contexts. |
SCARD_E_NO_MEMORY | Error creating the Context Thread. |
Definition at line 171 of file winscard_svc.c.
|
static |
Definition at line 848 of file winscard_svc.c.
|
static |
Definition at line 948 of file winscard_svc.c.
|
static |
Definition at line 1016 of file winscard_svc.c.
Definition at line 1046 of file winscard_svc.c.
|
static |
Definition at line 854 of file winscard_svc.c.
|
static |
Definition at line 999 of file winscard_svc.c.
LONG MSGSendReaderStates | ( | uint32_t | filedes | ) |
Definition at line 836 of file winscard_svc.c.
LONG MSGSignalClient | ( | uint32_t | filedes, |
LONG | rv | ||
) |
Definition at line 819 of file winscard_svc.c.
|
extern |
Represents an Application Context on the Server side.
An Application Context contains Channels (hCard
).
Definition at line 80 of file pcscdaemon.c.
Handles messages received from Clients.
For each Client message a new instance of this thread is created.
[in] | dwIndex | Index of an avaiable Application Context slot in SCONTEXT *. |
Definition at line 283 of file winscard_svc.c.
|
static |
Definition at line 76 of file winscard_svc.c.
|
static |
Definition at line 75 of file winscard_svc.c.
|
static |
Context tracking list.
Definition at line 78 of file winscard_svc.c.
pthread_mutex_t contextsList_lock |
lock for the above list
Definition at line 79 of file winscard_svc.c.
|
extern |
Definition at line 74 of file readerfactory.c.