diff options
Diffstat (limited to 'icqj_s7_sss_mod/icq_rates.h')
-rw-r--r-- | icqj_s7_sss_mod/icq_rates.h | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/icqj_s7_sss_mod/icq_rates.h b/icqj_s7_sss_mod/icq_rates.h new file mode 100644 index 0000000..c75e3a0 --- /dev/null +++ b/icqj_s7_sss_mod/icq_rates.h @@ -0,0 +1,117 @@ +// ---------------------------------------------------------------------------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 */
|