View Javadoc

1   /*
2    *  XNap - A P2P framework and client.
3    *
4    *  See the file AUTHORS for copyright information.
5    *
6    *  This program is free software; you can redistribute it and/or modify
7    *  it under the terms of the GNU General Public License as published by
8    *  the Free Software Foundation.
9    *
10   *  This program is distributed in the hope that it will be useful,
11   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   *  GNU General Public License for more details.
14   *
15   *  You should have received a copy of the GNU General Public License
16   *  along with this program; if not, write to the Free Software
17   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18   */
19  package org.xnap.plugin.opennap.net.msg;
20  
21  import org.xnap.plugin.opennap.net.OpenNapServer;
22  import org.xnap.plugin.opennap.net.msg.server.AcceptFailedMessage;
23  import org.xnap.plugin.opennap.net.msg.server.AllChannelListEntryMessage;
24  import org.xnap.plugin.opennap.net.msg.server.*;
25  import org.xnap.plugin.opennap.net.msg.server.BlockedFileMessage;
26  import org.xnap.plugin.opennap.net.msg.server.BrowseResponseMessage;
27  import org.xnap.plugin.opennap.net.msg.server.ChannelBanListEntryMessage;
28  import org.xnap.plugin.opennap.net.msg.server.ChannelListEntryMessage;
29  import org.xnap.plugin.opennap.net.msg.server.ChannelTopicMessage;
30  import org.xnap.plugin.opennap.net.msg.server.ChannelUserListEntryMessage;
31  import org.xnap.plugin.opennap.net.msg.server.ClientDisconnectMessage;
32  import org.xnap.plugin.opennap.net.msg.server.ClientStatisticsMessage;
33  import org.xnap.plugin.opennap.net.msg.server.DataPortErrorMessage;
34  import org.xnap.plugin.opennap.net.msg.server.DirectBrowseAckMessage;
35  import org.xnap.plugin.opennap.net.msg.server.DirectBrowseErrorMessage;
36  import org.xnap.plugin.opennap.net.msg.server.DirectBrowseRequestMessage;
37  import org.xnap.plugin.opennap.net.msg.server.DownloadAckMessage;
38  import org.xnap.plugin.opennap.net.msg.server.EmoteMessage;
39  import org.xnap.plugin.opennap.net.msg.server.EndAllChannelListMessage;
40  import org.xnap.plugin.opennap.net.msg.server.EndBrowseMessage;
41  import org.xnap.plugin.opennap.net.msg.server.EndChannelBanListMessage;
42  import org.xnap.plugin.opennap.net.msg.server.EndChannelListMessage;
43  import org.xnap.plugin.opennap.net.msg.server.EndChannelUserListMessage;
44  import org.xnap.plugin.opennap.net.msg.server.EndSearchMessage;
45  import org.xnap.plugin.opennap.net.msg.server.ErrorMessage;
46  import org.xnap.plugin.opennap.net.msg.server.GetErrorMessage;
47  import org.xnap.plugin.opennap.net.msg.server.GlobalMessage;
48  import org.xnap.plugin.opennap.net.msg.server.HotlistAckMessage;
49  import org.xnap.plugin.opennap.net.msg.server.HotlistErrorMessage;
50  import org.xnap.plugin.opennap.net.msg.server.InvalidMessageException;
51  import org.xnap.plugin.opennap.net.msg.server.InvalidNickMessage;
52  import org.xnap.plugin.opennap.net.msg.server.JoinAckMessage;
53  import org.xnap.plugin.opennap.net.msg.server.JoinMessage;
54  import org.xnap.plugin.opennap.net.msg.server.LoginAckMessage;
55  import org.xnap.plugin.opennap.net.msg.server.LoginAttemptMessage;
56  import org.xnap.plugin.opennap.net.msg.server.LoginErrorMessage;
57  import org.xnap.plugin.opennap.net.msg.server.MotdMessage;
58  import org.xnap.plugin.opennap.net.msg.server.NickAlreadyRegisteredMessage;
59  import org.xnap.plugin.opennap.net.msg.server.NickNotRegisteredMessage;
60  import org.xnap.plugin.opennap.net.msg.server.OperatorMessage;
61  import org.xnap.plugin.opennap.net.msg.server.PartChannelMessage;
62  import org.xnap.plugin.opennap.net.msg.server.PingMessage;
63  import org.xnap.plugin.opennap.net.msg.server.PingUserMessage;
64  import org.xnap.plugin.opennap.net.msg.server.PongUserMessage;
65  import org.xnap.plugin.opennap.net.msg.server.PrivateMessage;
66  import org.xnap.plugin.opennap.net.msg.server.PublicMessage;
67  import org.xnap.plugin.opennap.net.msg.server.QueueLimitMessage;
68  import org.xnap.plugin.opennap.net.msg.server.RedirectClientMessage;
69  import org.xnap.plugin.opennap.net.msg.server.SearchResponseMessage;
70  import org.xnap.plugin.opennap.net.msg.server.ServerLinksMessage;
71  import org.xnap.plugin.opennap.net.msg.server.ServerMessage;
72  import org.xnap.plugin.opennap.net.msg.server.ServerStatisticsMessage;
73  import org.xnap.plugin.opennap.net.msg.server.ServerStatsMessage;
74  import org.xnap.plugin.opennap.net.msg.server.UnshareAllFilesMessage;
75  import org.xnap.plugin.opennap.net.msg.server.UploadRequestMessage;
76  import org.xnap.plugin.opennap.net.msg.server.UserPartedChannelMessage;
77  import org.xnap.plugin.opennap.net.msg.server.UserSignoffMessage;
78  import org.xnap.plugin.opennap.net.msg.server.UserSignonMessage;
79  import org.xnap.plugin.opennap.net.msg.server.WhoisResponseMessage;
80  import org.xnap.plugin.opennap.net.msg.server.WhowasResponseMessage;
81  
82  public class MessageFactory {
83  
84      //--- Data Field(s) ---
85  
86      public static final int LOGIN_ERROR = 0;
87      public static final int LOGIN_ACK = 3;
88      public static final int NICK_NOT_REGISTERED = 8;
89      public static final int NICK_ALREADY_REGISTERED = 9;
90      public static final int INVALID_NICK = 10;
91      public static final int UNSHARE_ALL_FILES = 110;
92      public static final int SEARCH_RESPONSE = 201;
93      public static final int END_SEARCH_RESPONSE = 202;
94      public static final int DOWNLOAD_ACK = 204;
95      public static final int PRIVATE_MESSAGE = 205;
96      public static final int GET_ERROR = 206;
97      public static final int USER_SIGNON = 209;
98      public static final int USER_SIGNOFF = 210;
99      public static final int BROWSE_RESPONSE = 212;
100     public static final int END_BROWSE_LIST = 213;
101     public static final int SERVER_STATS = 214;
102     public static final int RESUME_SEARCH_RESPONSE = 216;
103     public static final int END_RESUME_SEARCH = 217;
104     public static final int HOTLIST_ACK = 301;
105     public static final int HOTLIST_ERROR = 302;
106     public static final int CLIENT_DISCONNECT = 316;
107     public static final int USER_IGNORE_LIST = 320;
108     public static final int USER_IGNORE_LIST_ENTRY = 321;
109     public static final int ADD_USER_TO_IGNORE_LIST = 322;
110     public static final int USER_NOT_IGNORED = 324;
111     public static final int USER_ALREADY_IGNORED = 325;
112     public static final int CLEAR_IGNORE_LIST = 326;
113     public static final int PART_CHANNEL = 401;
114     public static final int PUBLIC_MESSAGE = 403;
115     public static final int ERROR_MESSAGE = 404;
116     public static final int JOIN_ACK = 405;
117     public static final int JOIN_MESSAGE = 406;
118     public static final int USER_PARTED_CHANNEL = 407;
119     public static final int CHANNEL_USER_LIST_ENTRY = 408;
120     public static final int END_CHANNEL_USER_LIST = 409;
121     public static final int CHANNEL_BAN_LIST = 420;
122     public static final int CHANNEL_BAN_LIST_ENTRY = 421;
123     public static final int CHANNEL_MOTD = 425;
124     public static final int INVITE_USER = 430;
125     public static final int ALTERNATE_DOWNLOAD_ACK = 501;
126     public static final int SPEED_RESPONSE = 601;
127     public static final int WHOIS_RESPONSE = 604;
128     public static final int WHOWAS_RESPONSE = 605;
129     public static final int UPLOAD_REQUEST = 607;
130     public static final int ACCEPT_FAILED = 609;
131     public static final int SET_DATA_PORT = 613;
132     public static final int BAN_LIST_ENTRY = 616;
133     public static final int LIST_CHANNELS = 617;
134     public static final int CHANNEL_LIST_ENTRY = 618;
135     public static final int QUEUE_LIMIT = 620;
136     public static final int MOTD = 621;
137     public static final int DATA_PORT_ERROR = 626;
138     public static final int OPERATOR_MESSAGE = 627;
139     public static final int GLOBAL_MESSAGE = 628;
140     public static final int BANNED_USERS = 629;
141     public static final int DIRECT_BROWSE_REQUEST = 640;
142     public static final int DIRECT_BROWSE_ACCEPT = 641;
143     public static final int DIRECT_BROWSE_ERROR = 642;
144     public static final int LOGIN_ATTEMPT = 748;
145     public static final int SERVER_PING = 750;
146     public static final int PING_USER = 751;
147     public static final int PONG_RESPONSE = 752;
148     public static final int CYCLE_CLIENT = 822;
149     public static final int EMOTE = 824;
150     public static final int USER_LIST_ENTRY = 825;
151     public static final int END_CHANNEL_LIST = 827;
152     public static final int CHANNEL_LIST = 828;
153     public static final int END_USER_LIST = 830;
154     public static final int CONNECTION_TEST = 900;
155     public static final int LISTEN_TEST = 901;
156     public static final int BLOCKED_FILE = 931;
157 
158     //--- Constructor(s) ---
159 
160     //--- Method(s) ---
161 
162     public static ServerMessage create(OpenNapServer source, int type, 
163 									   String data) 
164 		throws InvalidMessageException
165     {
166 		ServerMessage msg;
167 
168 		switch (type) {
169 		case LoginErrorMessage.TYPE:
170 			msg = new LoginErrorMessage(data);
171 			break;
172 		case LOGIN_ACK:
173 			msg = new LoginAckMessage(data);
174 			break;
175 		case NICK_NOT_REGISTERED:
176 			msg = new NickNotRegisteredMessage(data);
177 			break;
178 		case NICK_ALREADY_REGISTERED:
179 			msg = new NickAlreadyRegisteredMessage(data);
180 			break;
181 		case INVALID_NICK:
182 			msg = new InvalidNickMessage(data);
183 			break;
184 		case UNSHARE_ALL_FILES:
185 			msg = new UnshareAllFilesMessage(data);
186 			break;
187 		case SEARCH_RESPONSE:
188 			msg = new SearchResponseMessage(data);
189 			break;
190 		case END_SEARCH_RESPONSE:
191 			msg = new EndSearchMessage(data);
192 			break;
193 		case DOWNLOAD_ACK:
194 			msg = new DownloadAckMessage(data);
195 			break;
196 		case PRIVATE_MESSAGE:
197 			msg = new PrivateMessage(data);
198 			break;
199 		case GET_ERROR:
200 			msg = new GetErrorMessage(data);
201 			break;
202 		case USER_SIGNON:
203 			msg = new UserSignonMessage(data);
204 			break;
205 		case USER_SIGNOFF:
206 			msg = new UserSignoffMessage(data);
207 			break;
208 		case BROWSE_RESPONSE:
209 			msg = new BrowseResponseMessage(data);
210 			break;
211 		case END_BROWSE_LIST:
212 			msg = new EndBrowseMessage(data);
213 			break;
214 		case SERVER_STATS:
215 			msg = new ServerStatsMessage(data);
216 			break;
217 			//  	case RESUME_SEARCH_RESPONSE:
218 			//  	    msg = new ResumeSearchResponseMessage(data);
219 			//  	    break;
220 			//  	case END_RESUME_SEARCH:
221 			//  	    msg = new EndResumeSearchResponseMessage(data);
222 			//  	    break;
223 		case HotlistAckMessage.TYPE:
224 			msg = new HotlistAckMessage(data);
225 			break;
226 		case HotlistErrorMessage.TYPE:
227 			msg = new HotlistErrorMessage(data);
228 			break;
229 		case CLIENT_DISCONNECT:
230 			msg = new ClientDisconnectMessage(data);
231 			break;
232 			//  	case USER_IGNORE_LIST:
233 			//  	    msg = new UserIgnoreListMessage(data);
234 			//  	    break;
235 			//  	case USER_IGNORE_LIST_ENTRY:
236 			//  	    msg = new UserIgnoreListEntryMessage(data);
237 			//  	    break;
238 		case ADD_USER_TO_IGNORE_LIST:
239 			msg = new AddUserToIgnoreListMessage(data);
240 			break;
241 			//  	case USER_NOT_IGNORED:
242 			//  	    msg = new UserNotIgnoredMessage(data);
243 			//  	    break;
244 			//  	case USER_ALREADY_IGNORED:
245 			//  	    msg = new UserAlreadyIgnoredMessage(data);
246 			//  	    break;
247 			//  	case CLEAR_IGNORE_LIST:
248 			//  	    msg = new ClearIgnoreListMessage(data);
249 			//  	    break;
250 		case PART_CHANNEL:
251 			msg = new PartChannelMessage(data);
252 			break;
253 		case PUBLIC_MESSAGE:
254 			msg = new PublicMessage(data);
255 			break;
256 		case ErrorMessage.TYPE:
257 			msg = new ErrorMessage(data);
258 			break;
259 		case JOIN_ACK:
260 			msg = new JoinAckMessage(data);
261 			break;
262 		case JOIN_MESSAGE:
263 			msg = new JoinMessage(data);
264 			break;
265     	case USER_PARTED_CHANNEL:
266     	    msg = new UserPartedChannelMessage(data);
267     	    break;
268 		case CHANNEL_USER_LIST_ENTRY:
269 			msg = new ChannelUserListEntryMessage(data);
270 			break;
271 		case END_CHANNEL_USER_LIST:
272 			msg = new EndChannelUserListMessage(data);
273 			break;
274     	case ChannelTopicMessage.TYPE:
275     	    msg = new ChannelTopicMessage(data);
276     	    break;
277 		case CHANNEL_BAN_LIST:
278 			msg = new EndChannelBanListMessage(data);
279 			break;
280 		case CHANNEL_BAN_LIST_ENTRY:
281 			msg = new ChannelBanListEntryMessage(data);
282 			break;
283 			//  	case CHANNEL_MOTD:
284 			//    	    msg = new ChannelMotdMessage(data);
285 			//    	    break;
286 			//    	case INVITE_USER:
287 			//    	    msg = new InviteUserMessage(data);
288 			//    	    break;
289 		case ALTERNATE_DOWNLOAD_ACK:
290 			msg = new AltDownloadAckMessage(data);
291 			break;
292 			//  	case SPEED_RESPONSE:
293 			//  	    msg = new LinkSpeedResponseMessage(data);
294 			//  	    break;
295 		case WHOIS_RESPONSE:
296 			msg = new WhoisResponseMessage(data);
297 			break;
298 		case WHOWAS_RESPONSE:
299 			msg = new WhowasResponseMessage(data);
300 			break;
301 		case UPLOAD_REQUEST:
302 			msg = new UploadRequestMessage(data);
303 			break;
304 		case ACCEPT_FAILED:
305 			msg = new AcceptFailedMessage(data);
306 			break;
307 		case SET_DATA_PORT:
308 			msg = new DataPortErrorMessage(data);
309 			break;
310 // 		case BAN_LIST_ENTRY:
311 // 			msg = new BanListEntryMessage(data);
312 // 			break;
313 		case LIST_CHANNELS:
314 			msg = new EndChannelListMessage(data);
315 			break;
316 		case CHANNEL_LIST_ENTRY:
317 			msg = new ChannelListEntryMessage(data);
318 			break;
319 		case QUEUE_LIMIT:
320 			msg = new QueueLimitMessage(data);
321 			break;
322 		case MOTD:
323 			msg = new MotdMessage(data);
324 			break;
325 		case DATA_PORT_ERROR:
326 			msg = new DataPortErrorMessage(data);
327 			break;
328 		case OPERATOR_MESSAGE:
329 			msg = new OperatorMessage(data);
330 			break;
331 		case GLOBAL_MESSAGE:
332 			msg = new GlobalMessage(data);
333 			break;
334 			//  	case BANNED_USERS:
335 			//  	    msg = new BannedUsersMessage(data);
336 			//  	    break;
337 		case DIRECT_BROWSE_REQUEST:
338 			msg = new DirectBrowseRequestMessage(data);
339 			break;
340 		case DIRECT_BROWSE_ACCEPT:
341 			msg = new DirectBrowseAckMessage(data);
342 			break;
343 		case DIRECT_BROWSE_ERROR:
344 			msg = new DirectBrowseErrorMessage(data);
345 			break;
346 		case LOGIN_ATTEMPT:
347 			msg = new LoginAttemptMessage(data);
348 			break;
349 		case SERVER_PING:
350 			msg = new PingMessage(data);
351 			break;
352 		case PING_USER:
353 			msg = new PingUserMessage(data);
354 			break;
355 		case PONG_RESPONSE:
356 			msg = new PongUserMessage(data);
357 			break;
358 		case RedirectClientMessage.TYPE:
359 			msg = new RedirectClientMessage(data);
360 			break;
361 			//  	case CYCLE_CLIENT:
362 			//  	    msg = new CycleClientMessage(data);
363 			//  	    break;
364 		case EMOTE:
365 			msg = new EmoteMessage(data);
366 			break;
367 			//  	case USER_LIST_ENTRY:
368 			//  	    msg = new UserListEntryMessage(data);
369 			//  	    break;
370 		case END_CHANNEL_LIST:
371 			msg = new EndAllChannelListMessage(data);
372 			break;
373 		case CHANNEL_LIST:
374 			msg = new AllChannelListEntryMessage(data);
375 			break;
376 			//  	case END_USER_LIST:
377 			//  	    msg = new EndUserListMessage(data);
378 			//  	    break;
379 			//  	case CONNECTION_TEST:
380 			//  	    msg = new ConnectionTestMessage(data);
381 			//  	    break;
382 			//  	case LISTEN_TEST:
383 			//  	    msg = new ListenTestMessage(data);
384 			//  	    break;
385 		case BLOCKED_FILE:
386 			msg = new BlockedFileMessage(data);
387 			break;
388 		case ServerLinksMessage.TYPE:
389 			msg = new ServerLinksMessage(data);
390 			break;
391 		case ServerStatisticsMessage.TYPE:
392 			msg = new ServerStatisticsMessage(data);
393 			break;
394 		case ClientStatisticsMessage.TYPE:
395 			msg = new ClientStatisticsMessage(data);
396 			break;
397 		default:
398 			throw new InvalidMessageException("Unknown message type: "
399 											  + type + " " + data);
400 		}
401 
402 		msg.setServer(source);
403 
404 		return msg;
405     }
406 	
407 
408 	public static String getMessageName(int id) {
409 
410 		String s;
411 
412 		switch (id) {
413 		case LoginErrorMessage.TYPE:
414 			s = "Login Error";
415 			break;
416 		case LOGIN_ACK:
417 			s = "LoginAck";
418 			break;
419 		case NICK_NOT_REGISTERED:
420 			s = "NickNotRegistered";
421 			break;
422 		case NICK_ALREADY_REGISTERED:
423 			s = "NickAlreadyRegistered";
424 			break;
425 		case INVALID_NICK:
426 			s = "InvalidNick";
427 			break;
428 		case UNSHARE_ALL_FILES:
429 			s = "UnshareAllFiles";
430 			break;
431 		case SEARCH_RESPONSE:
432 			s = "SearchResponse";
433 			break;
434 		case END_SEARCH_RESPONSE:
435 			s = "EndSearch";
436 			break;
437 		case DOWNLOAD_ACK:
438 			s = "DownloadAck";
439 			break;
440 		case PRIVATE_MESSAGE:
441 			s = "Private";
442 			break;
443 		case GET_ERROR:
444 			s = "GetError";
445 			break;
446 		case USER_SIGNON:
447 			s = "UserSignon";
448 			break;
449 		case USER_SIGNOFF:
450 			s = "UserSignoff";
451 			break;
452 		case BROWSE_RESPONSE:
453 			s = "BrowseResponse";
454 			break;
455 		case END_BROWSE_LIST:
456 			s = "EndBrowse";
457 			break;
458 		case SERVER_STATS:
459 			s = "ServerStats";
460 			break;
461 		case RESUME_SEARCH_RESPONSE:
462 			s = "ResumeSearchResponse";
463 			break;
464 		case END_RESUME_SEARCH:
465 			s = "EndResumeSearchResponse";
466 			break;
467 		case HotlistAckMessage.TYPE:
468 			s = "HotlistAck";
469 			break;
470 		case HotlistErrorMessage.TYPE:
471 			s = "HotlistError";
472 			break;
473 		case CLIENT_DISCONNECT:
474 			s = "ClientDisconnect";
475 			break;
476 		case USER_IGNORE_LIST:
477 			s = "UserIgnoreList";
478 			break;
479 		case USER_IGNORE_LIST_ENTRY:
480 			s = "UserIgnoreListEntry";
481 			break;
482 		case ADD_USER_TO_IGNORE_LIST:
483 			s = "AddUserToIgnoreList";
484 			break;
485 		case USER_NOT_IGNORED:
486 			s = "UserNotIgnored";
487 			break;
488 		case USER_ALREADY_IGNORED:
489 			s = "UserAlreadyIgnored";
490 			break;
491 		case CLEAR_IGNORE_LIST:
492 			s = "ClearIgnoreList";
493 			break;
494 		case PART_CHANNEL:
495 			s = "PartChannel";
496 			break;
497 		case PUBLIC_MESSAGE:
498 			s = "Public";
499 			break;
500 		case ErrorMessage.TYPE:
501 			s = "Error";
502 			break;
503 		case JOIN_ACK:
504 			s = "JoinAck";
505 			break;
506 		case JOIN_MESSAGE:
507 			s = "Join";
508 			break;
509     	case USER_PARTED_CHANNEL:
510     	    s = "UserPartedChannel";
511     	    break;
512 		case CHANNEL_USER_LIST_ENTRY:
513 			s = "ChannelUserListEntry";
514 			break;
515 		case END_CHANNEL_USER_LIST:
516 			s = "EndChannelUserList";
517 			break;
518     	case ChannelTopicMessage.TYPE:
519     	    s = "ChannelTopic";
520     	    break;
521 		case CHANNEL_BAN_LIST:
522 			s = "EndChannelBanList";
523 			break;
524 		case CHANNEL_BAN_LIST_ENTRY:
525 			s = "ChannelBanListEntry";
526 			break;
527 		case CHANNEL_MOTD:
528 			s = "ChannelMotd";
529 			break;
530 		case INVITE_USER:
531 			s = "InviteUser";
532 			break;
533 		case ALTERNATE_DOWNLOAD_ACK:
534 			s = "AltDownloadAck";
535 			break;
536 		case SPEED_RESPONSE:
537 			s = "LinkSpeedResponse";
538 			break;
539 		case WHOIS_RESPONSE:
540 			s = "WhoisResponse";
541 			break;
542 		case WHOWAS_RESPONSE:
543 			s = "WhowasResponse";
544 			break;
545 		case UPLOAD_REQUEST:
546 			s = "UploadRequest";
547 			break;
548 		case ACCEPT_FAILED:
549 			s = "AcceptFailed";
550 			break;
551 		case SET_DATA_PORT:
552 			s = "SetDataPortForUser";
553 			break;
554 		case BAN_LIST_ENTRY:
555 			s = "BanListEntry";
556 			break;
557 		case LIST_CHANNELS:
558 			s = "EndChannelList";
559 			break;
560 		case CHANNEL_LIST_ENTRY:
561 			s = "ChannelListEntry";
562 			break;
563 		case QUEUE_LIMIT:
564 			s = "QueueLimit";
565 			break;
566 		case MOTD:
567 			s = "Motd";
568 			break;
569 		case DATA_PORT_ERROR:
570 			s = "DataPortError";
571 			break;
572 		case OPERATOR_MESSAGE:
573 			s = "Operator";
574 			break;
575 		case GLOBAL_MESSAGE:
576 			s = "Global";
577 			break;
578 		case BANNED_USERS:
579 			s = "BannedUsers";
580 			break;
581 		case DIRECT_BROWSE_REQUEST:
582 			s = "DirectBrowseRequest";
583 			break;
584 		case DIRECT_BROWSE_ACCEPT:
585 			s = "DirectBrowseAck";
586 			break;
587 		case DIRECT_BROWSE_ERROR:
588 			s = "DirectBrowseError";
589 			break;
590 		case LOGIN_ATTEMPT:
591 			s = "LoginAttempt";
592 			break;
593 		case SERVER_PING:
594 			s = "Ping";
595 			break;
596 		case PING_USER:
597 			s = "PingUser";
598 			break;
599 		case PONG_RESPONSE:
600 			s = "PongUser";
601 			break;
602 		case RedirectClientMessage.TYPE:
603 			s = "RedirectClient";
604 			break;
605 		case CYCLE_CLIENT:
606 			s = "CycleClient";
607 			break;
608 		case EMOTE:
609 			s = "Emote";
610 			break;
611 		case USER_LIST_ENTRY:
612 			s = "UserListEntry";
613 			break;
614 		case END_CHANNEL_LIST:
615 			s = "EndAllChannelList";
616 			break;
617 		case CHANNEL_LIST:
618 			s = "AllChannelListEntry";
619 			break;
620 		case END_USER_LIST:
621 			s = "EndUserList";
622 			break;
623 		case CONNECTION_TEST:
624 			s = "ConnectionTest";
625 			break;
626 		case LISTEN_TEST:
627 			s = "ListenTest";
628 			break;
629 		case BLOCKED_FILE:
630 			s = "BlockedFile";
631 			break;
632 		case ServerLinksMessage.TYPE:
633 			s = "ServerLinks";
634 			break;
635 		case ServerStatisticsMessage.TYPE:
636 			s = "ServerStatistics";
637 			break;
638 		case ClientStatisticsMessage.TYPE:
639 			s = "ClientStatistics";
640 			break;
641 		default:
642 			s ="UnknownMessage!";
643 			
644 		}
645 		return s;
646 	}
647 
648 }
649