Sommaire - Description - Fonctions auxliaires

II) La réalisation du système


1) L’API

1.1)Fonctions ifs sur les répertoires


    1. Ouverture

Un appel à la fonction :

desc_t ifs_opendir(char *reference) ;

ouvre en lecture le répertoire de reference spécifiée et renvoie un objet de type desc_t (type des descripteurs de fichiers), et en cas d’échec l’élément renvoyé est -1.


Fonctionnement :

-Envoie de la requête au serveur(OPENDIR)

-Le serveur appelle la fonction

void odir(requete *query, reponse *rep) ;

-odir fait appel à la fonction

desc_t open_dir(USHORT disc_num,char *rep_name);

-open_dir:

-récupération de la structure d’inode

-chargement de la structure d’inode dans la table des nœuds en mémoire.

-réception de la réponse.


    1. Lecture des entrées de répertoire

Un appel à la fonction :

entreerep_p ifs_readdir(desc_t descripteur) ;

lit l’enregistrement courant dans le répertoire associé au descripteur et place le pointeur d’enregistrement courant sur le suivant .En cas de succès renvoie un objet de type entreerep_p(type des pointeurs sur le entrées de répertoire) et en cas d’échec renvoie le pointeur NULL.


Fonctionnement:

-Envoie de la requête au serveur(READDIR)

-Le serveur appelle la fonction

void rdir(requete *query, reponse *rep);

-rdir fait appel à la fonction read_dir

int read_dir(desc_t ifs_descr, entree_repertoire *dir_entr);


-read_dir :

int read_dir_entr(USHORT disc_num,entree_repertoire *dir_entr,USHORT rep_ino_num,USHORT entr_num);

et on incrémente la position courante.


    1. Fermeture

Un appel à la fonction :

int ifs_closedir(desc_t descripteur) ;

ferme le répertoire associé au descripteur . En cas de succès renvoie 1 et en cas d’échec –1.


Fonctionnement :

-Envoie de la requête au serveur(CLOSEDIR)

-Le serveur fait appel à la fonction cdir

void cdir(requete *query, reponse *rep);

-cdir fait appel à la fonction close_dir

int close_dir(desc_t ifs_descr);

-close_dir :


    1. Création

Un appel à la fonction :

int ifs_mkdir(char *reference);

permet la création d’un répertoire reference et renvoie 1 en cas de succès et –1 en cas d’échec.


Fonctionnement :

-Envoie de la requête au serveur(MKDIR)

-Le serveur fait appel à la fonction mdir

void mdir(requete *query,reponse *rep);

-mdir fait appel à la fonction

int make_dir(USHORT disc_num,USHORT father_node_num,char *dir_name);

-make_dir:


    1. Changement du répertoire courant

Un appel à la fonction :

int ifs_chdir(char *ref) ;

permet de modifier le répertoire de travail et où ref correspond au nouveau répertoire de travail. En cas de succès renvoie 1 et en cas d’échec renvoie –1.


Fonctionnement :

-Envoie de la requête au serveur(CHDIR)

-Le serveur fait appel à la fonction ch_dir

void ch_dir(requete *query,reponse *rep);

-ch_dir:


    1. Effacement

Un appel à la fonction :

int ifs_rmdir(char *reference);

permet la suppression des liens de répertoire correspondant à reference.

En cas de succès renvoie 1 et en cas d’échec renvoie –1.


Fonctionnement :

-Envoie de la requête au serveur(RMDIR)

-Le serveur fait appel à la fonction rm_dir

void rm_dir(requete *query,reponse *rep) ;

-rm_dir fait appel à la fonction del_dir

int del_dir(USHORT disc_num,USHORT father_node_num,char *dir_name);

-del_dir:





1.2) Fonctions de gestion des disques


Changement du disque courant

Un appel à la fonction :

int ifs_chdisc(char *disc_name) ;

permet de modifier le disque de travail et où disc_name correspond au nouveau disque de travail. En cas de succès renvoie 1 et en cas d’échec renvoie –1.


Fonctionnement :

-Envoie de la requête au serveur(CHDISC)

-Le serveur fait appel à la fonction ch_disc

int ch_disc(char *disc_name) ;

-ch_disc :


Changement du disque courant en passant son numéro

Un appel à la fonction :

int ifs_chdisc_num(int disc_num) ;

permet de modifier le disque de travail et où disc_num correspond au numéro du nouveau disque de travail. En cas de succès renvoie 1 et en cas d’échec renvoie –1.


Fonctionnement :

-Envoie de la requête au serveur(CHDISCNUM)

-Le serveur fait appel à la fonction ch_disc_num

int ch_disc_num(USHORT disc_num);

-ch_disc_num :


c) Récupération du numéro du disque courant

Un appel à la fonction :

int curdisc_num() ;

permet de récupérer le numéro du disque courant. En cas de succès renvoie le numéro du disque courant et en cas d’échec renvoie –1.


Fonctionnement :

-Envoie de la requête au serveur(CURDISC)

-Le serveur fait appel à la fonction curdisc

void curdisc(requete *query,reponse *rep);

-curdisc:




1.3) Fonction de consultation des inodes


Un appel à la fonction :

int ifs_stat(char *reference, stat_p buf);

permet d’obtenir les informations sur l’inode de nom reference et les stocke dans buf (objet de type pointeur sur ifsstat). En cas de succès renvoie 1 et en cas d’échec renvoie –1.


Fonctionnement :

-Envoie de la requête au serveur(STAT)

-Le serveur remplit une structure ifsstat permettant de récupérer des informations sur un node, et les envoie.


typedef struct ifsstat{

USHORT disc_num;//numéro du disque contenant le fichier

USHORT node_num;//numéro du noeud sur ce disc

USHORT type;//type du fichier

USHORT liens;//nb de liens vers se nœud

USHORT icone;//numéro du nœud de l'icône associé a ce fichier

USHORT taille;//taille du fichier en octet pour les FO,I Rep

}ifsstat;


Un appel à la fonction :

int ifs_fstat(desc_t descripteur,stat_p buf) ;

permet d’obtenir les informations sur l’inode à partir du descripteur et les stocke dans buf (objet de type pointeur sur ifsstat). En cas de succès renvoie 1 et en cas d’échec renvoie –1.


Fonctionnement :

-Envoie de la requête au serveur(FSTAT)

-Le serveur remplit la structure ifsstat permettant de récupérer des informations sur un node, et les envoie.


1.4) Fonction de gestion des liens vers les icônes


Un appel à cette fonction :

int ifs_linkicone(char *reference, char *icone);

permet de créer un nouveau lien physique déduit de la référence icône sur le fichier existant de référence reference. En cas de création du lien renvoie 1 et en cas d’échec renvoie –1.


Fonctionnement :

-Envoie de la requête au serveur(LNICO)

-Le serveur fait appel à la fonction lnico

void lnico(requete *query, reponse *rep);

-lnico:


Un appel à la fonction

int ifs_unlinkicone(char *reference);

supprime le lien correspondant à la référence reference donnée.

En cas de suppression du lien renvoie 1 et en cas d’échec renvoie –1.


Fonctionnement :

-Envoie de la requête au serveur(ULNICO)

-Le serveur fait appel à la fonction ulnico

void ulnico(requete *query,reponse *rep);

-ulnico:


1.5) Fonctions de gestion des fichiers


Un appel à la fonction

desc_t ifs_open(char *reference, int mode, int type) ;

renvoie le descripteur correspondant à l’ouverture du fichier de référence reference donné pour les opérations spécifiée par le mode d’ouverture. En cas d’échec elle renvoie –1.


Fonctionnement :

-Envoie de la requête au serveur(FOPEN)

-Le serveur fait appel à la fonction ifs_open_file(ouvre un fichier déjà créer)

int ifs_open_file(char *ref,int mode) ;

-ifs_open_file :

Un appel à la fonction :

int ifs_close(desc_t descripteur) ;

ferme le fichier associé au descripteur descripteur. En cas de succès renvoie 1 et en cas d’échec renvoie –1.


Fonctionnement :

-Envoie de la requête au serveur(FCLOSE)

-Le serveur fait appel à la fonction ifs_close_file

int ifs_close_file(desc_t descripteur) ;

-ifs_close_file :


Un appel à la fonction :

int ifs_link(char *src,char *dst);

permet de créer un nouveau lien physique déduit de la référence dst sur le fichier existant de référence src. En cas de création du lien renvoie 1 et en cas d’échec renvoie –1.


Fonctionnement :

-Envoie de la requête au serveur(LN)

-Le serveur fait appel à la fonction lnfile

void lnfile(requete *query,reponse *rep);

-lnfile:

en vérifiant que l'entrée n'existe pas déjà(newref2ino)

Un appel à la fonction :

int ifs_unlink(char *src);

supprime le lien correspondant à la référence src donnée, le cas échéant supprime le fichier src. En cas de suppression renvoie 1 et en cas d’échec renvoie –1.


Fonctionnement :

-Envoie de la requête au serveur(UNLN)

-Le serveur fait appel à la fonction unlnfile

void unlnfile(requete *query, reponse *rep);

-unlnfile:


Sommaire - Description - Fonctions auxliaires