CARS
Data Structures | Defines | Functions

/home/nicola/Dropbox/Progetto SOL/CARS_terfram/src/comsock.h File Reference

header libreria di comunicazione socket AF_UNIX More...

Go to the source code of this file.

Data Structures

struct  message_t

Defines

#define UNIX_PATH_MAX   108
#define NTRIALCONN   3
#define SEC_TIMER   30
#define LUSERNAME   25
#define MSG_CONNECT   'C'
#define MSG_OK   'K'
#define MSG_NO   'N'
#define MSG_REQUEST   'R'
#define MSG_OFFER   'F'
#define MSG_EXIT   'X'
#define MSG_SHARE   'S'
#define MSG_SHAREND   'H'

Functions

int createServerChannel (char *path)
int closeSocket (int s)
int acceptConnection (int s)
int receiveMessage (int sc, message_t *msg)
int sendMessage (int sc, message_t *msg)
int openConnection (char *path)

Detailed Description

header libreria di comunicazione socket AF_UNIX

Author:
lso11

Define Documentation

#define LUSERNAME   25

massima lunghezza consentita username

Referenced by addNewUser(), createSocketName(), goingBackToSleep(), main(), and worker_thread().

#define MSG_CONNECT   'C'

tipi dei messaggi scambiati fra server e client richiesta di connessione utente

Referenced by extractLoginData(), and setLoginMessage().

#define MSG_EXIT   'X'

termina la fase interattiva di invio richieste/offerte da parte del client

Referenced by setExitMessage(), and worker_thread().

#define MSG_NO   'N'
#define MSG_OFFER   'F'

offerta sharing

Referenced by appendReqOff(), checkValidMessage(), and setOfferMessage().

#define MSG_OK   'K'
#define MSG_REQUEST   'R'

richiesta sharing

Referenced by appendReqOff(), setRequestMessage(), and worker_thread().

#define MSG_SHARE   'S'

proposta di sharing

Referenced by printIncomingMessage(), and setShareMessage().

#define MSG_SHAREND   'H'

termina l'invio delle proposte di sharing da parte del server

Referenced by listen_thread(), printIncomingMessage(), and setSharEndMessage().

#define NTRIALCONN   3

numero di tentativi di connessione da parte del client

Referenced by openConnection(), and printEnv().

#define SEC_TIMER   30

timeout per il calcolo dgl iaccoppiamenti da parte del server

Referenced by match(), and printEnv().

#define UNIX_PATH_MAX   108

lunghezza buffer indirizzo AF_UNIX

Referenced by createServerChannel(), and openConnection().


Function Documentation

int acceptConnection ( int  s)

accetta una connessione da parte di un client

Parameters:
ssocket su cui ci mettiamo in attesa di accettare la connessione
Return values:
cil descrittore della socket su cui siamo connessi
-1in casi di errore (setta errno)

Referenced by main().

int closeSocket ( int  s)

Chiude una socket

Parameters:
sfile descriptor della socket
Return values:
0se tutto ok,
-1se errore (setta errno)

Referenced by cleanup(), goingBackToSleep(), main(), and signal_handler().

int createServerChannel ( char *  path)

Crea una socket AF_UNIX

Parameters:
pathpathname della socket
Return values:
sil file descriptor della socket (s>0)
-1in altri casi di errore (setta errno) errno = E2BIG se il nome eccede UNIX_PATH_MAX

in caso di errore ripristina la situazione inziale: rimuove eventuali socket create e chiude eventuali file descriptor rimasti aperti

References UNIX_PATH_MAX.

Referenced by main().

int openConnection ( char *  path)

crea una connessione all socket del server. In caso di errore funzione tenta NTRIALCONN volte la connessione (a distanza di 1 secondo l'una dall'altra) prima di ritornare errore.

Parameters:
pathnome del socket su cui il server accetta le connessioni
Returns:
fd il file descriptor della connessione se la connessione ha successo
Return values:
-1in caso di errore (setta errno) errno = E2BIG se il nome eccede UNIX_PATH_MAX

in caso di errore ripristina la situazione inziale: rimuove eventuali socket create e chiude eventuali file descriptor rimasti aperti

References NTRIALCONN, and UNIX_PATH_MAX.

Referenced by main(), and worker_thread().

int receiveMessage ( int  sc,
message_t msg 
)

legge un messaggio dalla socket --- attenzione si richiede che il messaggio sia adeguatamente spacchettato e trasferito nella struttura msg

Parameters:
scfile descriptor della socket
msgstruttura che conterra' il messagio letto (deve essere allocata all'esterno della funzione, tranne il campo buffer)
Return values:
lunglunghezza del buffer letto, se OK
-1in caso di errore (setta errno) errno = ENOTCONN se il peer ha chiuso la connessione (non ci sono piu' scrittori sulla socket)

References message_t::buffer, CHAR_LENGTH, and message_t::length.

Referenced by listen_thread(), main(), and worker_thread().

int sendMessage ( int  sc,
message_t msg 
)

scrive un messaggio sulla socket --- attenzione si richiede che il messaggio venga scritto con un'unica write dopo averlo adeguatamente impacchettato

Parameters:
scfile descriptor della socket
msgstruttura che contiene il messaggio da scrivere
Return values:
nil numero di caratteri inviati (se scrittura OK)
-1in caso di errore (setta errno) errno = ENOTCONN se il peer ha chiuso la connessione (non ci sono piu' lettori sulla socket)
Bug:
riga 231: si deve rendere parametrica la scrittura dei caratteri della dimensione.

References BUFF_SIZE, message_t::buffer, CHAR_LENGTH, message_t::length, and power().

Referenced by findAssociation(), main(), match(), and worker_thread().