Riferimenti per il file lista.h

#include "common.h"

Vai al codice sorgente di questo file.

Strutture dati

struct  thread
struct  lista

Definizioni

#define EMPTY   0
#define FULL   THREAD_MAX

Tipi enumerati (enum)

enum  boolean { false, true }

Funzioni

void inizializza (struct lista *stack)
int ins_new_elem (channel_t sk_cl, struct lista *stack)
channel_t estrazione (struct lista *stack)
boolean full (const struct lista *stack)
int rimuovi (channel_t sk_cl, struct lista *s)
channel_t leggi_sk_cl (struct lista *stack)

Descrizione dettagliata

Autore:
Tranchida Giulio, No. Matricola 241732
Si dichiara che il contenuto di questo file e', in ogni sua parte, opera originale dell'autore.

This program is free software; you can redistribuite it and/or modify it under the terms of the GNU/General Pubblic License as published the Free software Foundation; either version 2 of the License, or (at your opinion) any later version.

Definizione nel file lista.h.


Documentazione delle definizioni

#define EMPTY   0

Definisce il valore della lista vuota

Definizione alla linea 19 del file lista.h.

#define FULL   THREAD_MAX

Definisce la dimensione massima della lista in relazione al numero dei thread massimi ammessi contemporaneamente in esecuzione

Definizione alla linea 25 del file lista.h.


Documentazione dei tipi enumerati

enum boolean

Tipo enumerativo booleano

Definizione alla linea 28 del file lista.h.

00028 {false, true} boolean;


Documentazione delle funzioni

void inizializza ( struct lista stack  ) 

inizializza

Funzione che inizializza lo stack

Parametri:
*stack 

Definizione alla linea 15 del file lista.c.

00015                                      {
00016         stack->num_threads=0;   /* azzeramento del contatore */
00017         stack->top_elem=NULL;   /* azzeramento del puntatore */
00018 }

int ins_new_elem ( channel_t  sk_cl,
struct lista stack 
)

ins_new_elem

Inserisce un elemento nello stack

Parametri:
sk_cl 
*stack 
Restituisce:
  • 0 in caso di successo
  • errno in caso di errore

Definizione alla linea 20 del file lista.c.

00020                                                   {
00021         struct thread *new = NULL;
00022 
00023         if (!(new = (struct thread *) malloc(sizeof(struct thread)))){
00024                 errore(__FILE__,__LINE__,
00025                 "Errore nel creare un nuovo elemento (STACK)",errno);
00026                 return errno;
00027         }
00028         new->sk_cl = sk_cl;
00029         new->next = s->top_elem;/* fa puntare il nuovo elemento al primo della lista */
00030         s->top_elem = new;              /* inserisce il nuovo elemento in testa alla lista */
00031         s->num_threads++;               /* incrementa il valore del contatore */
00032         return 0;
00033 }

channel_t estrazione ( struct lista stack  ) 

estrazione

Estrae l'elemento in cima allo stack

Parametri:
*stack 
Restituisce:
  • channel_t, l'identificatore del canale di comunicazione
  • -1 se l alista e' vuota

Definizione alla linea 35 del file lista.c.

00035                                      {
00036         int sk_cl = -1;
00037         /* Puntatore temporaneo che puntera'
00038          * all'area di memoria da eliminare */
00039         struct thread *tmp;
00040         
00041         /* Se la lista non e' vuota... */
00042         if (s->top_elem){
00043                 sk_cl = s->top_elem->sk_cl;
00044                 /* Ora tmp punta all'area di memoria dell'elemento in cima alla lista */        
00045                 tmp = s->top_elem;
00046                 /* Il secondo elemento della lista diventa il primo,
00047                  * vengono scambiati cioe' gli indirizzi */
00048                 s->top_elem = s->top_elem->next;
00049                 s->num_threads--;
00050                 free(tmp);
00051         }
00052         return sk_cl;
00053 }

boolean full ( const struct lista stack  ) 

full

Controlla se la coda e' piena o meno.

Parametri:
*stack 
Restituisce:
In accordo con il tipo "boolean" restituisce
  • true se piena
  • false altrimenti

Definizione alla linea 97 del file lista.c.

00097                                    {
00098         return ((boolean) (s->num_threads == FULL));
00099 }

int rimuovi ( channel_t  sk_cl,
struct lista s 
)

rimuovi

Rimuove dalla lista un elemento con chiave "sk_cl" e lo disalloca.

Parametri:
s puntatore alla lista
sk_cl cidentificatore del canale di comunicazione
Restituisce:
0 se tutto e' andato bene -1 se l'elemento non e' presente

Definizione alla linea 84 del file lista.c.

00084                                              {
00085         int ret_val=0;
00086         
00087         if (s->top_elem){
00088                 /* Cerchiamo e rimuoviamo... */
00089                 ret_val = delete_elem(sk_cl, &(s->top_elem));
00090                 if (!ret_val) s->num_threads--;
00091                 return ret_val;
00092         }
00093         /* Altrimenti errore lista vuota... */
00094         return -1;
00095 }

channel_t leggi_sk_cl ( struct lista stack  ) 

leggi_sk_cl

Restituisce il l'id del socket dell'elemento in cima allo stack

Parametri:
*stack 
Restituisce:
channel_t, l'identificatore del canale di comunicazione tra client e server

Definizione alla linea 101 del file lista.c.

00101                                       {
00102         return s->top_elem->sk_cl;
00103 }

Generato il Sat Jan 29 15:05:41 2011 per SFAT: Simplified File Allocation Table Project da  doxygen 1.6.3