#ifndef msg_h #define msg_h #define REG 1 #define PEN 2 #define ERASER 3 #define CURSOR 4 #define TEXT 5 #define CLEAN 6 #define DISC 7 #define CONN 8 #define QUIT 9 #define BOB 10 #define NOB 11 #define ACK 12 #define NAK 13 /* Format of message types REG(B).Filler(B).HostName(40).PortID(S).UserLogin(20) PEN(B).SIZE(B).X(S).Y(S) TEXT(B).LENGTH(B).X(S).Y.(S).TEXT_DATA(indicated by LENGTH) BOB(B).Filler(B).W(S).L(S).LENGTH(S).BITMAP_DATA(indicated by LENGTH) NOB(B).Filler(B).LINE_NO(S).LENGTH(S).BITMAP_DATA(indicated by LENGTH) ERASER(B).SIZE(B).X(S).Y(S). CURSOR(B).Filler(B).X(S).Y(S). CLEAN_SCREEN(B) DISC(B) CONN(B).size(B).name(B) */ struct RegRecord { unsigned char msgType; unsigned char Filler; char hostname[40]; short portId; char userLogin[20]; }; struct PenRecord { unsigned char msgType; unsigned char size; short X; short Y; }; struct TextRecord { unsigned char msgType; unsigned char size; short X; short Y; char buf[256]; }; struct BOBRecord { unsigned char msgType; unsigned char filler; short W; short H; short Length; unsigned char x_bits[256]; }; struct NOBRecord { unsigned char msgType; unsigned char filler; short LineNo; short Length; unsigned char x_bits[256]; }; struct EraserRecord { unsigned char msgType; unsigned char size; short X; short Y; }; struct CursorRecord { unsigned char msgType; unsigned char filler; short X; short Y; }; struct DiscRecord { unsigned char msgType; }; struct ConnRecord { unsigned char msgType; unsigned char size; char name[20]; char originator[20]; }; struct CleanRecord { unsigned char msgType; }; struct QuitRecord { unsigned char msgType; }; /* message from IS */ struct ACKRecord { unsigned char msgType; unsigned char Filler; char userLogin[20]; /* destination user login */ char originator[20]; char hostname[20]; short portId; }; /* message from IS */ struct NAKRecord { unsigned char msgType; unsigned char Filler; char userLogin[20]; /* destination user login */ char reason[80]; /* reason that the request being rejected */ char originator[20]; }; union Record { struct RegRecord rr; struct PenRecord pr; struct TextRecord tr; struct BOBRecord bbr; struct NOBRecord nbr; struct EraserRecord er; struct CursorRecord cr; struct CleanRecord clr; struct DiscRecord dr; struct ConnRecord nr; struct QuitRecord qr; struct NAKRecord nakr; struct ACKRecord ackr; }; #endif