channel.c-Dateireferenz

#include <udp.h>
#include <properties.h>
#include <daemon.h>
Include-Abhängigkeitsdiagramm für channel.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define COMMAND   "cmd"
#define CHANNEL   "channel"

Funktionen

int filter_listeners (object ob, string channel)
int udp_channel (mapping data)
string name ()
string Name ()
private void _send (string mud, mixed data, mapping request)
void ChannelMessage (mixed m)

Variablen

static private mixed _name_

Makro-Dokumentation

#define CHANNEL   "channel"

Definiert in Zeile 17 der Datei channel.c.

Wird benutzt von udp_channel().

#define COMMAND   "cmd"

Definiert in Zeile 16 der Datei channel.c.


Dokumentation der Funktionen

private void _send ( string  mud,
mixed  data,
mapping  request 
)

Definiert in Zeile 81 der Datei channel.c.

Benutzt HOST_COMMANDS, HOST_NAME und INETD.

00082 {
00083   if(member(data[HOST_COMMANDS], "channel") != -1 ||
00084      member(data[HOST_COMMANDS], "*") != -1)
00085     INETD->_send_udp(data[HOST_NAME], request);
00086 }

void ChannelMessage ( mixed  m  ) 

Definiert in Zeile 88 der Datei channel.c.

Benutzt DATA, INETD, MSG_EMOTE, MSG_GEMOTE, MUDNAME, old_explode(), REQUEST und SENDER.

00089 {
00090   mapping request;
00091   if(m[1] == this_object()) return;
00092   request = ([
00093                       REQUEST : "channel",
00094                       SENDER  : m[1]->name() || capitalize(getuid(m[1])),
00095                       "CHANNEL": lower_case(m[0]),
00096                       DATA    : implode(old_explode(m[2], "\n"), " ")]);
00097   if(m[3] == MSG_GEMOTE || m[3] == MSG_EMOTE)
00098   { 
00099     request["EMOTE"] = 1;
00100     request["CMD"] = "emote";
00101   }
00102   walk_mapping(INETD->query("hosts") - ([lower_case(MUDNAME)]), 
00103                #'_send/*'*/, request);
00104 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

int filter_listeners ( object  ob,
string  channel 
)

Definiert in Zeile 21 der Datei channel.c.

Benutzt P_INTERMUD.

00021                                                 {
00022     return ob->QueryProp(P_INTERMUD);
00023 }

string Name (  ) 

Definiert in Zeile 79 der Datei channel.c.

Benutzt _name_.

00079 {return capitalize(_name_ || "<Intermud>");}

string name (  ) 

Definiert in Zeile 78 der Datei channel.c.

Benutzt _name_.

00078 { return _name_ || "<Intermud>"; }

int udp_channel ( mapping  data  ) 

Definiert in Zeile 25 der Datei channel.c.

Benutzt _name_, CHANNEL, CHMASTER, COMMAND, DATA, i, ID, INETD, list, LOCAL_NAME, msg(), MSG_EMOTE, MSG_SAY, NAME, query_real_name(), RECIPIENT, REPLY, REQUEST und SENDER.

00025                               {
00026   object *list;
00027   string msg;
00028   int i, type;
00029 
00030   /* Compatability with older systems. */
00031   if (!data[CHANNEL])
00032     data[CHANNEL] = data["CHANNEL"];
00033   if (!data[COMMAND])
00034     data[COMMAND] = data["CMD"];
00035   if (!data[DATA])
00036     data[DATA]="";
00037 
00038   data[DATA]=
00039     implode(filter(explode(data[DATA], ""), #'>=, " "), "");//'))
00040   data[NAME]=
00041     implode(filter(explode(data[NAME], ""), #'>=, " "), "");//'))
00042   switch(data[COMMAND]) {
00043   case "list":
00044     /* Request for a list of people listening to a certain channel. */
00045     list = filter(users(), "filter_listeners", 
00046                                                 this_object(), data[CHANNEL]);
00047     if (i = sizeof(list)) {
00048       msg = "[" + capitalize(data[CHANNEL]) + "@" +
00049                 LOCAL_NAME + "] Listening:\n";
00050       while(i--)
00051                 msg +=
00052                   "    " + capitalize(list[i]->query_real_name()) + "\n";
00053     }
00054     else
00055       msg = "[" + capitalize(data[CHANNEL]) + "@" + LOCAL_NAME 
00056       + "] Nobody Listening.\n";
00057     INETD->_send_udp(data[NAME], ([
00058                                                                   REQUEST: REPLY,
00059                                                                   RECIPIENT: data[SENDER],
00060                                                                   ID: data[ID],
00061                                                                   DATA: msg
00062                                 ]));
00063     return 1;
00064   case "emote": /* A channel emote. */
00065       type = MSG_EMOTE;
00066       break;
00067   default: /* A regular channel message. */
00068     type = MSG_SAY;
00069     break;
00070   }
00071   _name_ = capitalize(data[SENDER])+"@"+capitalize(data[NAME]);
00072   CHMASTER->send(capitalize(data[CHANNEL]), this_object(), 
00073                                  data[DATA], type);
00074   _name_ = 0;
00075   return 1;
00076 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:


Variablen-Dokumentation

private mixed _name_ [static]

Definiert in Zeile 19 der Datei channel.c.

Wird benutzt von Name(), name() und udp_channel().

Erzeugt am Thu Jun 3 14:41:59 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3