CARS
Defines | Functions

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

Implementazione delle funzioni definite nell'header file comsock.h. More...

#include "comsock.h"
#include "settings.h"
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>

Defines

#define CHAR_LENGTH   4
#define BUFF_SIZE   512

Functions

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

Detailed Description

Implementazione delle funzioni definite nell'header file comsock.h.

Author:
Nicola Corti
Bug:
riga 231: si deve rendere parametrica la scrittura dei caratteri della dimensione.

Si dichiara che il contenuto di questo file e' in ogni sua parte opera originale dell' autore.


Define Documentation

#define BUFF_SIZE   512

Dimensione del campo buffer del messaggio. Necessaria per effettuare la serializzazione del messaggio e la sua ricezione

Referenced by findAssociation(), goingBackToSleep(), main(), match(), sendMessage(), setOfferMessage(), setRequestMessage(), and worker_thread().

#define CHAR_LENGTH   4

Dimensione in caratteri del campo dimensioni. Necessaria per effettuare la serializzazione del messaggio e la sua ricezione

Referenced by receiveMessage(), and sendMessage().


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().

static int power ( int  exp) [static]

Calcola l'elevamento a potenza, in base 10 di un numero

Referenced by sendMessage().

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 
)
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().