/*
 * Server.h 1.4
 * Copyright © 1995 by Stefano Reksten of 3AM - The Three Amigos!!!
 * All rights reserved.
 *
 * DON'T FOOL WITH THIS FILE! It's BServer private only. Modifying
 * anything could bring to unpredictable results. Moreover your
 * programs would not be compatible with future releases of this
 * program.
 *
 */

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif

#ifndef EXEC_PORTS_H
#include <exec/ports.h>
#endif

#ifndef GRAPHICS_DISPLAYINFO_H
#include <graphics/displayinfo.h>
#endif

#ifndef SERVER_H
#define SERVER_H

#define CLIENTNAME_MAXLENGTH 108
/* former definition was 32 */

/* Client actions */

#define ACTION_IDLE        0
#define ACTION_ARRIVED     1
#define ACTION_LEAVING     2	/* removed, use ACTION_FAILED */
#define ACTION_FAILED      3

/* Server commands */

#define COMMAND_IDLE        0
#define COMMAND_QUIT        1

#define PROGRAMNAME	"BServer"
#define PROGRAMVERSION	"1.4"


#define SERVERPORTNAME PROGRAMNAME"Port"

/*=========================================================*/
/*=== ClientMessage =======================================*/
/*=========================================================*/

struct ClientMessage {
	struct Message cm_Msg;
	struct DisplayIDInformation *DInfo;
	ULONG cm_Action;
	};

/*=========================================================*/
/*=== ServerMessage =======================================*/
/*=========================================================*/

struct ServerMessage {
	struct Message sm_Msg;
	ULONG sm_Command;
	APTR sm_Data;
	};

/*=========================================================*/
/*=== ClientNode ==========================================*/
/*=========================================================*/

struct ClientNode {
	struct Node cn_Node;
	char cn_ClientName[CLIENTNAME_MAXLENGTH];
	};

/*=========================================================*/
/*=== ModeNode ============================================*/
/*=========================================================*/

struct ModeNode
	{
	struct Node mn_Node;
	UWORD mn_Index;
	ULONG mn_DisplayID;
	char mn_Name[DISPLAYNAMELEN];
	};

/*=========================================================*/
/*=== DisplayIDInformation ================================*/
/*=========================================================*/

struct DisplayIDInformation
	{
	struct DisplayInfo   di_DisplayInfo;
	struct DimensionInfo di_DimensionInfo;
	struct MonitorInfo   di_MonitorInfo;
	UBYTE di_Brightness;
	};

/*=========================================================*/
/*=== Gadgets IDs =========================================*/
/*=========================================================*/

#define TIMEOUT_GDG	0
#define RANDOM_GDG	1
#define ACTIVE_GDG	2
#define HIDE_GDG	3
#define QUIT_GDG	4
#define BLANK_GDG	5
#define KILL_GDG	6
#define LIST_GDG	7
#define MODEID_GDG  8
#define ADDCLIENTS_GDG	9
#define BRILEVEL_GDG	10

#define MENUID_ABOUT 1
#define MENUID_HIDE 2
#define MENUID_QUIT 3
#define MENUID_RAWMOUSE 4
#define MENUID_DISK 5

#endif
