From 048aaf0c4e77402adf584e3318e5aae6f1cdd749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20P=C3=B6sel?= Date: Mon, 5 Nov 2012 21:11:48 +0000 Subject: XFire adoption (crashes on login, no 64bit) git-svn-id: http://svn.miranda-ng.org/main/trunk@2212 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Xfire/src/sendtypingpacket.cpp | 103 +++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 protocols/Xfire/src/sendtypingpacket.cpp (limited to 'protocols/Xfire/src/sendtypingpacket.cpp') diff --git a/protocols/Xfire/src/sendtypingpacket.cpp b/protocols/Xfire/src/sendtypingpacket.cpp new file mode 100644 index 0000000000..3cc09d80e9 --- /dev/null +++ b/protocols/Xfire/src/sendtypingpacket.cpp @@ -0,0 +1,103 @@ +#include "stdafx.h" + +/* + * Plugin of miranda IM(ICQ) for Communicating with users of the XFire Network. + * + * Copyright (C) 2010 by + * dufte + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Based on J. Lawler - BaseProtocol + * Herbert Poul/Beat Wolf - xfirelib + * + * Miranda ICQ: the free icq client for MS Windows + * Copyright (C) 2000-2008 Richard Hughes, Roland Rabien & Tristan Van de Vreede + * + */ + +//sendtypingklasse hinzugefügt http://xfirelib.sphene.net/board2/showThread/367 - big thx to Fl0ri4n - dufte + + +#include "sendtypingpacket.h" +#include "xfireutils.h" +#include +#include +#include "xdebug.h" + +namespace xfirelib { +using namespace std; + +std::map SendTypingPacket::imindexes; + +void SendTypingPacket::init(Client *client, string username) { +BuddyListEntry *entry = client->getBuddyList()->getBuddyByName(username); +if(entry) { +setSid(entry->sid); +} +initIMIndex(); +} + +void SendTypingPacket::initIMIndex() { +string str_sid(sid); +if( imindexes.count( str_sid ) < 1 ) +imindex = imindexes[str_sid] = 1; +else +imindex = ++imindexes[str_sid]; + +} +void SendTypingPacket::setSid(const char *sid) { +memcpy(this->sid,sid,16); +} + +int SendTypingPacket::getPacketContent(char *buf) { +if( imindex == 0 ) initIMIndex(); + +int index = 0; +VariableValue val; +val.setName("sid"); +val.setValue(sid,16); + +index += val.writeName(buf,index); +buf[index++] = 3; +index += val.writeValue(buf,index); + +val.setName("peermsg"); +index += val.writeName(buf,index); +buf[index++] = 5; +//buf[index++] = 7; +buf[index++] = 3; + +val.setName("msgtype"); +val.setValueFromLong(3,4); +index += val.writeName(buf,index); +buf[index++] = 2; +index += val.writeValue(buf,index); + +val.setName("imindex"); +val.setValueFromLong(imindex,4); +index += val.writeName(buf,index); +buf[index++] = 02; +index += val.writeValue(buf,index); + +val.setName("typing"); +val.setValueFromLong(1,4); +index += val.writeName(buf,index); +buf[index++] = 02; +index += val.writeValue(buf,index); + +return index; +} +} \ No newline at end of file -- cgit v1.2.3