/*********************************************************/ /* Autori: */ /* Pelosi Giovanni, 346787, pelosi */ /* Pesce Agatino, 456868, pesce */ /* */ /* Progetto: Sistemi 2: biblioteca */ /* Data Pr.: 9/2/96 */ /* File: message.h */ /* */ /*********************************************************/ #ifndef _MESSAGE_H #define _MESSAGE_H #include "libro.h" #include "system.h" /*#include "socket.h"*/ typedef char Biblio_t[20]; typedef enum MessageType_tag { MsgTypeQuery = 'A', /* richiesta informazioni */ MsgTypeReply = 'B', /* risposta da server a client o server */ MsgTypeControl = 'C', /* connessione iniziale tra server */ MsgTypeError = 'X', /* messaggio di lunghezza errata */ MsgTypeEof = 'Z' /* fine lettura per chiusura socket */ } MessageType_t; typedef struct MessageQuery_tag { char NoForward; Libro_t Libro; /* struttura dati query/riposte */ } MessageQuery_t; typedef struct MessageReply_tag { Biblio_t Biblio; /* nome biblioteca */ Libro_t Libro; /* struttura dati query/riposte */ } MessageReply_t; typedef struct MessageControl_tag /* connessione iniziale tra server */ { struct sockaddr_in Sin; } MessageControl_t; typedef union MessageBody_tag /* corpo messaggio */ { MessageQuery_t Query; MessageReply_t Reply; MessageControl_t Control; } MessageBody_t; typedef struct Message_tag /* messaggio generico */ { MessageType_t Type; /* tipo messaggio */ MessageBody_t Body; /* corpo messaggio */ } Message_t; typedef char MessageText_t[1024]; /* testo messaggio completo (>= a sizeof(Message_t))*/ int PutRawLibro(char* t, Libro_t* Msg); int GetRawLibro(Libro_t* Msg, char* t); int PutMsgControl(int Socket, struct sockaddr_in* Sin); int GetMsgControl(MessageControl_t* Msg ,char* p); int PutMsgQuery(int Socket, char NoForward, Libro_t* Libro); int GetMsgQuery(MessageQuery_t* Msg, char* t); int PutMsgNil(int Socket); int PutMsgReply(int Socket, Biblio_t Biblio, Libro_t* Libro); int GetMsgReply(MessageReply_t* Msg, char* t); int GetMsgText( Message_t* Msg, MessageText_t Text,int ReadLen); int WriteMessage( int Socket ); int ReadMessage( int Socket, Message_t* Msg ); int ClPutMsgQuery(MessageText_t Text, char NoForward, Libro_t* Libro); int ClGetMsgReply(MessageReply_t* Msg, char* t); int SizeRawLibro(void); int SizeMsgControl(void); int SizeMsgQuery(void); int SizeMsgReply(void); int MessageLen(int Type); #endif