CARS
|
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) |
header libreria di comunicazione socket AF_UNIX
#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' |
rifiuto
Referenced by listen_thread(), printIncomingMessage(), setErrorMessage(), and updateMessageSem().
#define MSG_OFFER 'F' |
offerta sharing
Referenced by appendReqOff(), checkValidMessage(), and setOfferMessage().
#define MSG_OK 'K' |
accettazione
Referenced by listen_thread(), main(), printIncomingMessage(), setOkMessage(), and updateMessageSem().
#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().
int acceptConnection | ( | int | s | ) |
accetta una connessione da parte di un client
s | socket su cui ci mettiamo in attesa di accettare la connessione |
c | il descrittore della socket su cui siamo connessi |
-1 | in casi di errore (setta errno) |
Referenced by main().
int closeSocket | ( | int | s | ) |
Chiude una socket
s | file descriptor della socket |
0 | se tutto ok, |
-1 | se errore (setta errno) |
Referenced by cleanup(), goingBackToSleep(), main(), and signal_handler().
int createServerChannel | ( | char * | path | ) |
Crea una socket AF_UNIX
path | pathname della socket |
s | il file descriptor della socket (s>0) |
-1 | in 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.
path | nome del socket su cui il server accetta le connessioni |
-1 | in 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
sc | file descriptor della socket |
msg | struttura che conterra' il messagio letto (deve essere allocata all'esterno della funzione, tranne il campo buffer) |
lung | lunghezza del buffer letto, se OK |
-1 | in 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
sc | file descriptor della socket |
msg | struttura che contiene il messaggio da scrivere |
n | il numero di caratteri inviati (se scrittura OK) |
-1 | in caso di errore (setta errno) errno = ENOTCONN se il peer ha chiuso la connessione (non ci sono piu' lettori sulla socket) |
References BUFF_SIZE, message_t::buffer, CHAR_LENGTH, message_t::length, and power().
Referenced by findAssociation(), main(), match(), and worker_thread().