Frameworks/libpurple.framework/Versions/0.6.2/Headers/ycht.h
author Zachary West <zacw@adium.im>
Fri Aug 21 13:25:11 2009 -0700 (2009-08-21)
changeset 2592 e8d15275025e
parent 1739 Frameworks/libpurple.framework/Versions/0.6.0/Headers/ycht.h@8b0daad9656c
permissions -rw-r--r--
im.pidgin.adium.1-4 at 267c6165e02e34318a1823960bd04c0639952f73
     1 /**
     2  * @file ycht.h The Yahoo! protocol plugin, YCHT protocol stuff.
     3  *
     4  * purple
     5  *
     6  * Copyright (C) 2004 Timothy Ringenbach <omarvo@hotmail.com>
     7  *
     8  * Purple is the legal property of its developers, whose names are too numerous
     9  * to list here.  Please refer to the COPYRIGHT file distributed with this
    10  * source distribution.
    11  *
    12  * This program is free software; you can redistribute it and/or modify
    13  * it under the terms of the GNU General Public License as published by
    14  * the Free Software Foundation; either version 2 of the License, or
    15  * (at your option) any later version.
    16  *
    17  * This program is distributed in the hope that it will be useful,
    18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    20  * GNU General Public License for more details.
    21  *
    22  * You should have received a copy of the GNU General Public License
    23  * along with this program; if not, write to the Free Software
    24  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
    25  */
    26 
    27 #ifndef _PURPLE_YCHT_H_
    28 #define _PURPLE_YCHT_H_
    29 
    30 /* #define YAHOO_YCHT_DEBUG */
    31 
    32 #define YAHOO_YCHT_HOST "jcs3.chat.dcn.yahoo.com"
    33 #define YAHOO_YCHT_PORT 8002
    34 
    35 #define YCHT_VERSION (0xae)
    36 #define YCHT_HEADER_LEN (0x10)
    37 
    38 typedef enum {
    39 	YCHT_SERVICE_LOGIN = 0x01,
    40 	YCHT_SERVICE_LOGOUT = 0x02,
    41 	YCHT_SERVICE_CHATJOIN = 0x11,
    42 	YCHT_SERVICE_CHATPART = 0x12,
    43 	YCHT_SERVICE_CHATMSG = 0x41,
    44 	YCHT_SERVICE_CHATMSG_EMOTE = 0x43,
    45 	YCHT_SERVICE_PING = 0x62,
    46 	YCHT_SERVICE_ONLINE_FRIENDS = 0x68
    47 } ycht_service;
    48 /*
    49 yahoo: YCHT Service: 0x11 Version: 0x100
    50 yahoo: Data[0]: Linux, FreeBSD, Solaris:1
    51 yahoo: Data[1]: Questions, problems and discussions about all flavors of Unix.
    52 yahoo: Data[2]:
    53 yahoo: Data[3]: 0
    54 yahoo: Data[4]: sgooki888\0020\002 \0022769036\00258936\002
    55 yahoo: --==End of incoming YCHT packet==--
    56 
    57 yahoo: --==Incoming YCHT packet==--
    58 yahoo: YCHT Service: 0x12 Version: 0x100
    59 yahoo: Data[0]: Linux, FreeBSD, Solaris:1
    60 yahoo: Data[1]: cccc4cccc
    61 yahoo: --==End of incoming YCHT packet==--
    62 
    63 */
    64 #define YCHT_SEP "\xc0\x80"
    65 
    66 typedef struct _YchtConn {
    67 	PurpleConnection *gc;
    68 	gchar *room;
    69 	int room_id;
    70 	gint fd;
    71 	gint inpa;
    72 	gboolean logged_in;
    73 	gboolean changing_rooms;
    74 	guchar *rxqueue;
    75 	guint rxlen;
    76 	PurpleCircBuffer *txbuf;
    77 	guint tx_handler;
    78 } YchtConn;
    79 
    80 typedef struct {
    81 	guint version;
    82 	guint service;
    83 	gint status;
    84 	GList *data;
    85 } YchtPkt;
    86 
    87 void ycht_connection_open(PurpleConnection *gc);
    88 void ycht_connection_close(YchtConn *ycht);
    89 
    90 void ycht_chat_join(YchtConn *ycht, const char *room);
    91 int ycht_chat_send(YchtConn *ycht, const char *room, const char *what);
    92 void ycht_chat_leave(YchtConn *ycht, const char *room, gboolean logout);
    93 void ycht_chat_send_invite(YchtConn *ycht, const char *room, const char *buddy, const char *msg);
    94 void ycht_chat_goto_user(YchtConn *ycht, const char *name);
    95 void ycht_chat_send_keepalive(YchtConn *ycht);
    96 
    97 #endif /* _PURPLE_YCHT_H_ */