paulo@0: /* paulo@0: * $Id: msg_handler.h,v 1.3 2004/01/07 07:24:43 hipnod Exp $ paulo@0: * paulo@0: * Copyright (C) 2001-2003 giFT project (gift.sourceforge.net) paulo@0: * paulo@0: * This program is free software; you can redistribute it and/or modify it paulo@0: * under the terms of the GNU General Public License as published by the paulo@0: * Free Software Foundation; either version 2, or (at your option) any paulo@0: * later version. paulo@0: * paulo@0: * This program is distributed in the hope that it will be useful, but paulo@0: * WITHOUT ANY WARRANTY; without even the implied warranty of paulo@0: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU paulo@0: * General Public License for more details. paulo@0: */ paulo@0: paulo@0: #ifndef GIFT_GT_MSG_HANDLER_H_ paulo@0: #define GIFT_GT_MSG_HANDLER_H_ paulo@0: paulo@0: /*****************************************************************************/ paulo@0: paulo@0: #define MSG_DEBUG gt_config_get_int("message/debug=0") paulo@0: paulo@0: /*****************************************************************************/ paulo@0: paulo@0: /* Erm, ugly node state encoded in a query-hit */ paulo@0: typedef enum gt_eqhd_type1 paulo@0: { paulo@0: EQHD1_EMPTY = 0x00, /* no flags set */ paulo@0: EQHD1_PUSH_FLAG = 0x01, /* send a push request for this result */ paulo@0: EQHD1_HAS_BAD = 0x02, /* bad flag in qhd[2] is signficant,always 0? */ paulo@0: EQHD1_HAS_BUSY = 0x04, /* busy ... */ paulo@0: EQHD1_HAS_STABLE = 0x08, /* stable ... */ paulo@0: EQHD1_HAS_SPEED = 0x10, /* speed ... */ paulo@0: EQHD1_HAS_GGEP = 0x20, /* query-hit has GGEP encoded block */ paulo@0: } gt_eqhd1_t; paulo@0: paulo@0: typedef enum gt_eqhd_type2 paulo@0: { paulo@0: EQHD2_EMPTY = 0x00, /* no flags set */ paulo@0: EQHD2_HAS_PUSH = 0x01, /* set if push flag is significant */ paulo@0: EQHD2_BAD_FLAG = 0x02, /* always 0? */ paulo@0: EQHD2_BUSY_FLAG = 0x04, /* set if for no availability */ paulo@0: EQHD2_STABLE_FLAG = 0x08, /* set if transmitted an upload */ paulo@0: EQHD2_SPEED_FLAG = 0x10, /* if set, speed is max attained upload speed */ paulo@0: EQHD2_HAS_GGEP = 0x20, /* packet has GGEP */ paulo@0: } gt_eqhd2_t; paulo@0: paulo@0: /*****************************************************************************/ paulo@0: paulo@0: #include "gt_node.h" paulo@0: #include "gt_packet.h" paulo@0: paulo@0: #include "message/gt_message.h" paulo@0: paulo@0: /*****************************************************************************/ paulo@0: paulo@0: /* paulo@0: * A message handler function. paulo@0: */ paulo@0: typedef void (*GtMessageHandler) (GtNode *node, TCPC *c, GtPacket *packet); paulo@0: paulo@0: #define MSG_HANDLER_ARG_NAMES \ paulo@0: node, c, packet paulo@0: paulo@0: #define GT_MSG_HANDLER(func) \ paulo@0: void func (GtNode *node, TCPC *c, GtPacket *packet) paulo@0: paulo@0: /*****************************************************************************/ paulo@0: paulo@0: #endif /* GIFT_GT_MSG_HANDLER_H_ */