message.h
上传用户:tany51
上传日期:2013-06-12
资源大小:1397k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*
  2.  * Copyright (C) 1998,1999,2001  Ross Combs (rocombs@cs.nmsu.edu)
  3.  *
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version 2
  7.  * of the License, or (at your option) any later version.
  8.  *
  9.  * This program is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  * GNU General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU General Public License
  15.  * along with this program; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  17.  */
  18. #ifndef INCLUDED_MESSAGE_TYPES
  19. #define INCLUDED_MESSAGE_TYPES
  20. #ifdef MESSAGE_INTERNAL_ACCESS
  21. #ifdef JUST_NEED_TYPES
  22. # include "common/packet.h"
  23. # include "connection.h"
  24. #else
  25. # define JUST_NEED_TYPES
  26. # include "common/packet.h"
  27. # include "connection.h"
  28. # undef JUST_NEED_TYPES
  29. #endif
  30. #endif
  31. typedef enum
  32. {
  33.     message_type_adduser,
  34.     message_type_join,
  35.     message_type_part,
  36.     message_type_whisper,
  37.     message_type_talk,
  38.     message_type_broadcast,
  39.     message_type_channel,
  40.     message_type_userflags,
  41.     message_type_whisperack,
  42.     message_type_friendwhisperack,   // [zap-zero] 20020518
  43.     message_type_channelfull,
  44.     message_type_channeldoesnotexist,
  45.     message_type_channelrestricted,
  46.     message_type_info,
  47.     message_type_error,
  48.     message_type_emote,
  49.     message_type_uniqueid,
  50.     message_type_mode,
  51.     message_type_null
  52. } t_message_type;
  53. typedef enum {
  54.     message_class_normal,
  55.     message_class_charjoin, /* use char*account (if account isnt d2 char is "") */
  56. } t_message_class;
  57. typedef struct message
  58. #ifdef MESSAGE_INTERNAL_ACCESS
  59. {
  60.     unsigned int   num_cached;
  61.     t_packet * *   packets;    /* cached messages */
  62.     t_conn_class * classes;    /* classes of cached message connections */
  63.     unsigned int * dstflags;   /* overlaid flags of cached messages */
  64.     t_message_class * mclasses; /* classes of cached messages */
  65.     /* ---- */
  66.     t_message_type type;       /* format of message */
  67.     t_connection * src;        /* originator message */
  68.     t_connection * dst;        /* destination */
  69.     char const *   text;       /* text of message */
  70. }
  71. #endif
  72. t_message;
  73. #endif
  74. /*****/
  75. #ifndef JUST_NEED_TYPES
  76. #ifndef INCLUDED_MESSAGE_PROTOS
  77. #define INCLUDED_MESSAGE_PROTOS
  78. #define JUST_NEED_TYPES
  79. #include <stdio.h>
  80. #include "connection.h"
  81. #undef JUST_NEED_TYPES
  82. extern char * message_format_line(t_connection const * c, char const * in);
  83. extern t_message * message_create(t_message_type type, t_connection * src, t_connection * dst, char const * text);
  84. extern int message_destroy(t_message * message);
  85. extern int message_send(t_message * message, t_connection * dst);
  86. extern int message_send_all(t_message * message);
  87. extern int message_send_admins(t_connection * src, t_message_type type, char const * text);
  88.   
  89. /* the following are "shortcuts" to avoid calling message_create(), message_send(), message_destroy() */
  90. extern int message_send_text(t_connection * dst, t_message_type type, t_connection * src, char const * text);
  91. extern int message_send_formatted(t_connection * dst, char const * text);
  92. extern int message_send_file(t_connection * dst, FILE * fd);
  93. #endif
  94. #endif