1 |
NAME |
2 |
Net::Knuddels - www.knuddels.de protocol implementation. |
3 |
|
4 |
SYNOPSIS |
5 |
use Net::Knuddels; |
6 |
|
7 |
DESCRIPTION |
8 |
RTSL. |
9 |
|
10 |
CLASS Net::Knuddels::Protocol |
11 |
You must call the "destroy" method of this class when you no longer use |
12 |
it, as circular references will keep the object alive otherwise. |
13 |
|
14 |
new Create a new "Net::Knuddels::Protocol" object. |
15 |
|
16 |
$protocol->feed_data ($octets) |
17 |
Feed raw protocol data into the decoder. |
18 |
|
19 |
$msg = $protocol->encode_msg (@strings) |
20 |
Join the strings with "\0", encode the result into a protocol packet |
21 |
and return it. |
22 |
|
23 |
$protocol->register ($type => $callback) |
24 |
Register a callback for events of type $type, which is either the |
25 |
name of a low-level event sent by the server (such as "k" for dialog |
26 |
box) or the name of a generated event, such as "login". |
27 |
|
28 |
$protocol->destroy |
29 |
*MUST* be called to destroy the object, otherwise it will leak (no |
30 |
automatic cleanup). |
31 |
|
32 |
CLASS Net::Knuddels::Client |
33 |
Implement a Knuddels client connection. |
34 |
|
35 |
new Net::Knuddels::Client [IO::Socket::new arguments] |
36 |
Create a new client connection. |
37 |
|
38 |
Optional extra arguments: |
39 |
|
40 |
command_wait => $cb($client,$wait) |
41 |
This callback will be called with the client object |
42 |
and a time to wait. It must call the C<command_cb> method |
43 |
after the time specified, either by a blocking wait |
44 |
or via some event loop callback. The default implementation |
45 |
just does a blockign wait. |
46 |
|
47 |
$client->fh |
48 |
Return the fh used for communications. You are responsible for |
49 |
calling "$client->ready" whenever the fh becomes ready for reading. |
50 |
|
51 |
$client->ready |
52 |
To be called then the filehandle is ready for reading. Returns false |
53 |
if the server closed the connection, true otherwise. |
54 |
|
55 |
$client->command_cb |
56 |
Should be called by the "command_wait" callback when the timer has |
57 |
expired, to send a delayed command to the server. |
58 |
|
59 |
$client->command ($type => @args) |
60 |
Send a message of type $type and the given arguments to the server, |
61 |
ensures a proper rate-limit. |
62 |
|
63 |
$client->login ($url, $unknown) |
64 |
Send a 't' message. The default for $url is |
65 |
"http://www.knuddels.de/applet.html?v=87&c=-3" and $unknown is 3. |
66 |
|
67 |
$client->enter_room ($room, $nick, $password) |
68 |
Enters a room $room with $nick and $password. (for joining multiple |
69 |
rooms call this multiple times) |
70 |
|
71 |
NOTE: i won't allow joins to multiple rooms with different |
72 |
nick/password's, the java client reacted very confused.. don't know |
73 |
whether the server supports this. |
74 |
|
75 |
$client->send_whois ($nick) |
76 |
Sends a whois-request for $nick. |
77 |
|
78 |
$client->send_room_msg ($nick, $room, $message) |
79 |
Sends a private $message to $nick over $room. |
80 |
|
81 |
$client->send_priv_msg ($nick, $room, $message) |
82 |
Sends a private $message to $nick over $room. |
83 |
|
84 |
$client->send_join_room ($oldroom, $room) |
85 |
Sends the server a join command for $room. This will result in a |
86 |
room change from $oldroom to $room. |
87 |
|
88 |
$client->send_exit_room ($room) |
89 |
Exits $room completly. (can be seen as counter method for |
90 |
"enter_room ()") |
91 |
|
92 |
$client->register ($type => $cb) |
93 |
See Net::Knuddels::Protocol::register. The following extra events |
94 |
will be generated by this class: |
95 |
|
96 |
login |
97 |
set_nick can only be called _after_ a login event has occured. |
98 |
|
99 |
msg_room => $room, $user, $msg |
100 |
produced when a public message is uttered :) |
101 |
|
102 |
msg_priv => $room, $src, $dst, $msg |
103 |
personal message from $src to $dst. better use msg_priv_nondup, |
104 |
msg_priv_james or msg_priv_echo |
105 |
|
106 |
msg_priv_echo => $room, $src, $dst, $msg |
107 |
like msg_priv, but only for echoed messages |
108 |
|
109 |
msg_priv_james => $room, $src, $dst, $msg |
110 |
like msg_priv, but only for messages from James |
111 |
|
112 |
msg_priv_nondup => $room, $src, $dst, $msg |
113 |
like msg_priv, but avoids duplicate messages, echos and james. |
114 |
|
115 |
user_list => $room, $list |
116 |
the userlist of a channel named $room, a elmement of the list (a user) |
117 |
looks like: |
118 |
{ |
119 |
name => <name>, |
120 |
flag => <some flag i don't know what it means>, |
121 |
color => like /\d+.\d+.\d+/, |
122 |
age => /\d+/, |
123 |
gender => /(f|m)/, |
124 |
picture => <the picture file to put behind the nick> |
125 |
} |
126 |
|
127 |
room_info => $room, $room_info |
128 |
some information about the $room: |
129 |
$room_info = |
130 |
{ |
131 |
picture => <some picturefile> |
132 |
} |
133 |
|
134 |
join_room => $room, $user |
135 |
join message of $user joined the room $room |
136 |
$user contains the user structure (see user_list). |
137 |
|
138 |
part_room => $room, $user |
139 |
part message of $user who left the room $room |
140 |
$user contains the user structure (see user_list). |
141 |
=cut |
142 |
|
143 |
sub register { my ($self, $type, $cb) = @_; |
144 |
|
145 |
$self->{proto}->register ($type, $cb); |
146 |
} |
147 |
|
148 |
AUTHOR |
149 |
Marc Lehmann <schmorp@schmorp.de> |
150 |
http://home.schmorp.de/ |
151 |
|