/*******************************************************************
* $Header: /home/kender/muddev/marxkove/include/RCS/board.h,v 1.2 1995/02/17 22
:01:22 kender Exp $
*
* $Revision: 1.1 $
* $Date: 1996/02/15 01:36:15 $
* $State: Exp $
* $Author: kender $
* $Locker: kender $
*
*-----------------------------------------------------------------------
* Kove Development Code
*
* $Log: intermudP.h,v $
* Revision 1.1 1996/02/15 01:36:15 kender
* Initial revision
*
*
*********************************************************************/
#ifndef __INTERMUDP_H__
#define __INTERMUDP_H__
#include "intermud.h"
#include "darray.h"
typedef enum __serviceTypes {
SERV_TELL, SERV_WHO, SERV_FINGER, SERV_LOCATE, SERV_CHANNEL,
SERV_NEWS, SERV_FILE, SERV_SMTP, SERV_FTP, SERV_NNTP, SERV_HTTP,
SERV_RCP} serviceTypes;
extern char *services[];
typedef enum __messageTypes {
MESG_TELL, MESG_WHO_REQ, MESG_WHO_REPLY, MESG_FINGER_REQ,
MESG_FINGER_REPLY, MESG_LOCATE_REQ, MESG_LOCATE_REPLY,
MESG_CHANLIST_REPLY, MESG_CHANNEL_M, MESG_CHANNEL_E,
MESG_CHANNEL_T, MESG_CHANNEL_ADD, MESG_CHANNEL_REMOVE,
MESG_CHANNEL_ADMIN, MESG_CHAN_WHO_REQ, MESG_CHAN_WHO_REPLY,
MESG_CHANNEL_LISTEN, MESG_CHAN_USER_REQ, MESG_CHAN_USER_REPLY,
MESG_NEWS_READ_REQ, MESG_NEWS_POST, MESG_NEWSGRP_LIST_REQ,
MESG_MAIL, MESG_FILE, MESG_ERROR, MESG_STARTUP_REQ_3,
MESG_STARTUP_REPLY, MESG_SHUTDOWN, MESG_MUDLIST,
MESG_EMOTETO,
MESG_UNKNOWN } messageTypes;
typedef enum __elemTypes {
TYPE_STRING, TYPE_LIST, TYPE_MAPPING, TYPE_INT, TYPE_OTHER
} elemTypes;
typedef struct __listObject {
char *origString;
int numElements;
elemTypes *type;
char **data;
} listObject;
typedef struct __mappingObject {
char *origString;
int numElements;
elemTypes *keyType,*valueType;
char **keys,**values;
} mappingObject;
listObject *parseList(char *list);
void destroyList(listObject *);
mappingObject *parseMapping(char *mapping);
void destroyMapping(mappingObject *);
typedef void (*imHandler)(char *type,
int ttl,
char *origMud,
char *origUser,
char *targetMud,
char *targetUser,
listObject *packet);
#define DECLARE_HANDLER(name) \
void (name)(char *type, int ttyl, \
char *origMud, char *origUser, \
char *targetMud, char *targetUser, \
listObject *packet)
typedef struct __imMapping {
messageTypes type;
char *name;
imHandler handler;
} imMapping;
extern char *immessages[];
extern pdarray mudlist;
extern int numMuds;
typedef struct __mudInfo {
char *name;
char *type;
char *addr;
int isup;
int playerPort;
int tcpPort;
int udpPort;
} mudInfo;
#define INTERMUD_DIR "INTERMUD/"
#define MUDLIST_ID INTERMUD_DIR "mudlist.id"
#define CHANLIST_ID INTERMUD_DIR "chanlist.id"
#define INTERMUD_PASS INTERMUD_DIR "impass.id"
#define MUDLIST_FILE INTERMUD_DIR "mudlist"
#define BANNED_MUD_FILE INTERMUD_DIR "banned.mud"
#define NCOPY(a) ( (a) ? COPY(a) : NULL )
/*
* Normal message handler declarations
*/
DECLARE_HANDLER(_imTell );
DECLARE_HANDLER(_imEmote );
DECLARE_HANDLER(_imWhoReq );
DECLARE_HANDLER(_imWhoReply );
DECLARE_HANDLER(_imFingerReq );
DECLARE_HANDLER(_imFingerReply );
DECLARE_HANDLER(_imLocateReq );
DECLARE_HANDLER(_imLocateReply );
DECLARE_HANDLER(_imChanlReply );
DECLARE_HANDLER(_imChanM );
DECLARE_HANDLER(_imChanE );
DECLARE_HANDLER(_imChanT );
DECLARE_HANDLER(_imChanAdd );
DECLARE_HANDLER(_imChanRem );
DECLARE_HANDLER(_imChanAdmin );
DECLARE_HANDLER(_imChanWhoReq );
DECLARE_HANDLER(_imChanWhoReply);
DECLARE_HANDLER(_imChanListen);
DECLARE_HANDLER(_imChanUserReq);
DECLARE_HANDLER(_imChanUserReply );
DECLARE_HANDLER(_imNewsReadReq );
DECLARE_HANDLER(_imNewsPost );
DECLARE_HANDLER(_imNewsListReq );
DECLARE_HANDLER(_imMail );
DECLARE_HANDLER(_imFile );
DECLARE_HANDLER(_imError );
DECLARE_HANDLER(_imStartup3 );
DECLARE_HANDLER(_imStartupReply );
DECLARE_HANDLER(_imShutdown );
DECLARE_HANDLER(_imMudList );
DECLARE_HANDLER(_imUnknown );
char *__imAddStr(char *orig, char *str);
char *__imAddInt(char *orig, int num);
char *__imAddlStr(char *orig, char *str);
char *__imAddlInt(char *orig, int num);
char *__imStartList(char *orig);
char *__imStopList(char *orig,int comma);
char *__imStartMap(char *orig);
char *__imStopMap(char *orig);
int __iSend(char *str);
int buildImPacket(listObject *list,char *str);
#endif __INTERMUDP_H__