// ---------------------------------------------------------------------------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,2003,2004 Martin berg, Sam Kothari, Robert Rainwater // Copyright 2004,2005,2006,2007 Joe Kucera // Copyright 2006,2007 [sss], chaos.persei, [sin], Faith Healer, Theif, nullbie // // 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // // ----------------------------------------------------------------------------- // // File name : $Source$ // Revision : $Revision: 36 $ // Last change on : $Date: 2007-08-05 03:45:10 +0300 (Вс, 05 авг 2007) $ // Last change by : $Author: sss123next $ // // DESCRIPTION: // // Describe me here please... // // ----------------------------------------------------------------------------- #ifndef __ICQ_RATES_H #define __ICQ_RATES_H extern CRITICAL_SECTION ratesMutex; typedef struct rates_group_s { DWORD dwWindowSize; DWORD dwClearLevel; DWORD dwAlertLevel; DWORD dwLimitLevel; DWORD dwMaxLevel; // current level int rCurrentLevel; int tCurrentLevel; // links WORD* pPairs; int nPairs; } rates_group; typedef struct rates_s { int nGroups; rates_group groups[]; } rates; rates* gRates; rates* ratesCreate(BYTE* pBuffer, WORD wLen); void ratesRelease(rates** pRates); WORD ratesGroupFromSNAC(rates* pRates, WORD wFamily, WORD wCommand); WORD ratesGroupFromPacket(rates* pRates, icq_packet* pPacket); int ratesNextRateLevel(rates* pRates, WORD wGroup); int ratesDelayToLevel(rates* pRates, WORD wGroup, int nLevel); void ratesPacketSent(rates* pRates, icq_packet* pPacket); void ratesUpdateLevel(rates* pRates, WORD wGroup, int nLevel); #define RML_CLEAR 1 #define RML_ALERT 2 #define RML_LIMIT 3 #define RML_IDLE_10 0x10 #define RML_IDLE_30 0x11 #define RML_IDLE_50 0x12 #define RML_IDLE_70 0x13 int ratesGetLimitLevel(rates* pRates, WORD wGroup, int nLevel); // Rates - Level 2 #define RIT_AWAYMSG_RESPONSE 0x01 // response to status msg request #define RIT_XSTATUS_REQUEST 0x10 // schedule xstatus details requests #define RIT_XSTATUS_RESPONSE 0x11 // response to xstatus details request typedef struct rate_record_s { BYTE bType; // type of request WORD wGroup; int nRequestType; int nMinDelay; HANDLE hContact; DWORD dwUin; DWORD dwMid1; DWORD dwMid2; WORD wCookie; WORD wVersion; BOOL bThruDC; char *szData; BYTE msgType; } rate_record; // Level 2 of rate management int handleRateItem(rate_record *item, BOOL bAllowDelay); void InitRates(); void UninitRates(); #endif /* __ICQ_RATES_H */