From 48540940b6c28bb4378abfeb500ec45a625b37b6 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Tue, 15 May 2012 10:38:20 +0000 Subject: initial commit git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/IcqOscarJ/icq_avatar.h | 134 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 protocols/IcqOscarJ/icq_avatar.h (limited to 'protocols/IcqOscarJ/icq_avatar.h') diff --git a/protocols/IcqOscarJ/icq_avatar.h b/protocols/IcqOscarJ/icq_avatar.h new file mode 100644 index 0000000000..e6d140795a --- /dev/null +++ b/protocols/IcqOscarJ/icq_avatar.h @@ -0,0 +1,134 @@ +// ---------------------------------------------------------------------------80 +// ICQ plugin for Miranda Instant Messenger +// ________________________________________ +// +// Copyright © 2000-2001 Richard Hughes, Roland Rabien, Tristan Van de Vreede +// Copyright © 2001-2002 Jon Keating, Richard Hughes +// Copyright © 2002-2004 Martin Öberg, Sam Kothari, Robert Rainwater +// Copyright © 2004-2010 Joe Kucera +// +// 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 Street, Fifth Floor, Boston, MA 02110-1301 USA. +// +// ----------------------------------------------------------------------------- +// +// File name : $URL: http://miranda.googlecode.com/svn/trunk/miranda/protocols/IcqOscarJ/icq_avatar.h $ +// Revision : $Revision: 14141 $ +// Last change on : $Date: 2012-03-09 22:52:15 +0200 (Пт, 09 мар 2012) $ +// Last change by : $Author: george.hazan $ +// +// DESCRIPTION: +// +// Avatars connection support declarations +// +// ----------------------------------------------------------------------------- + +#ifndef __ICQ_AVATAR_H +#define __ICQ_AVATAR_H + + +extern BYTE hashEmptyAvatar[9]; + +#define AVATAR_HASH_MINI 0x00 +#define AVATAR_HASH_STATIC 0x01 +#define AVATAR_HASH_FLASH 0x08 +#define AVATAR_HASH_PHOTO 0x0C + +struct CIcqProto; + +struct avatars_server_connection : public lockable_struct +{ +protected: + CIcqProto *ppro; + HANDLE hConnection; // handle to the connection + HANDLE hPacketRecver; + WORD wLocalSequence; + icq_critical_section *localSeqMutex; + + BOOL isLoggedIn; + BOOL isActive; + BOOL stopThread; // horrible, but simple - signal for thread to stop + + char *pCookie; // auth to server + WORD wCookieLen; + + int sendServerPacket(icq_packet *pPacket); + + int handleServerPackets(BYTE *buf, int buflen); + + void handleLoginChannel(BYTE *buf, WORD datalen); + void handleDataChannel(BYTE *buf, WORD datalen); + + void handleServiceFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader); + void handleAvatarFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader); + + rates *m_rates; + icq_critical_section *m_ratesMutex; + + int NetLog_Server(const char *fmt,...); + + HANDLE runContact[4]; + DWORD runTime[4]; + int runCount; + void checkRequestQueue(); +public: + avatars_server_connection(CIcqProto *ppro, HANDLE hConnection, char *pCookie, WORD wCookieLen); + virtual ~avatars_server_connection(); + + void connectionThread(); + void closeConnection(); + void shutdownConnection(); + + __inline BOOL isPending() { return !isLoggedIn; }; + __inline BOOL isReady() { return isLoggedIn && isActive && !stopThread; }; + + DWORD sendGetAvatarRequest(HANDLE hContact, DWORD dwUin, char *szUid, const BYTE *hash, unsigned int hashlen, const TCHAR *file); + DWORD sendUploadAvatarRequest(HANDLE hContact, WORD wRef, const BYTE *data, unsigned int datalen); +}; + +__inline static void SAFE_DELETE(avatars_server_connection **p) { SAFE_DELETE((lockable_struct**)p); }; + + +struct avatars_request : public void_struct +{ + int type; + HANDLE hContact; + DWORD dwUin; + uid_str szUid; + BYTE *hash; + unsigned int hashlen; + TCHAR *szFile; + BYTE *pData; + unsigned int cbData; + WORD wRef; + DWORD timeOut; + avatars_request *pNext; +public: + avatars_request(int type); + virtual ~avatars_request(); +}; + +__inline static void SAFE_DELETE(avatars_request **p) { SAFE_DELETE((void_struct**)p); }; + +#define ART_GET 1 +#define ART_UPLOAD 2 +#define ART_BLOCK 4 + + +int DetectAvatarFormat(const TCHAR *szFile); +void AddAvatarExt(int dwFormat, TCHAR *pszDest); + +BYTE* calcMD5HashOfFile(const TCHAR *szFile); + +#endif /* __ICQ_AVATAR_H */ -- cgit v1.2.3