unit Types;
interface
const
// константы статуса
// (если единица в старшем разряде,
// то наш IP-адрес будет скрыт от другого клиента)
STATE_ONLINE =$10020000;
STATE_AWAY =$10020001;
STATE_DND =$10020013;
STATE_INVISIBLE =$10020100;
STATE_OCCUPIED =$10020011;
STATE_FREEFORCHAT=$10020020;
STATE_N_A =$10020005;
// константы статуса для внутненнего использования
// (индексы для картинок и др.)
online = 0; freeforchat = 1; invisible = 2; occupied = 3; dnd = 4; away = 5; na = 6; etc = 7; offline = 8; simply_icq = 9; mes = 10; empty = 11;
// типы сообщений
TYPE_MSG =$01;
TYPE_CHAT =$02;
TYPE_FILE =$03;
TYPE_URL =$04;
TYPE_AUTH_REQ =$06;
TYPE_AUTH_DEN =$07;
TYPE_AUTH_GIV =$08;
TYPE_ADDED =$0C;
TYPE_WEBPAGER =$0D;
TYPE_EXPRESS =$0E;
TYPE_CONTACT =$13;
TYPE_CONTACT_REG =$1A;
PACKET_DATA_SIZE = 4096;
type
IParray = array[0..3] of byte;
PByteArray = ^TByteArray;
TByteArray = array[0..PACKET_DATA_SIZE-1] of byte;
PCharArray = ^TCharArray;
TCharArray = array[0..PACKET_DATA_SIZE-1] of char;
PWORD = ^word;
PLONG = ^longint;
PBYTE = ^byte;
// FLAP-заголовок type PFLAP_HDR = ^FLAP_HDR;
FLAP_HDR = packed record
Sign : byte;
ChID : byte;
SEQ : word;
Len : word;
end;
// SNAC-заголовок
type PSNAC_HDR = ^SNAC_HDR;
SNAC_HDR = packed record
FamilyID : word;
SubTypeID : word;
Flags : array[0..1] of byte;
RequestID : longint;
end;
// полный FLAP-пакет
// при чтении с TCP-socketa сюда укладываем FLAP-заголовок и сами ДАННЫЕ.
// Из таких записей формируется связной список (см. поле Next)
type PFLAP_Item = ^FLAP_Item;
FLAP_Item = packed record
FLAP : FLAP_HDR;
DATA : PByteArray;
Next : PFLAP_Item;
end;
// Пакет, который поступает в обработчик.
// Помимо самого FLAP-пакета в нем хранятся вспомогательные поля
// Cursor - текущая позиция чтения/записи
// Length - общая длина FLAP-заголовка и FLAP-данных
// Вариантная часть - для более осмысленного доступа к пакету
type PPack = ^Pack;
Pack = packed record
cursor : word;
length : word;
case integer of
0: (DATA:array[0..PACKET_DATA_SIZE-1] of byte);
1: (FLAP : FLAP_HDR;
FLAP_BODY:array[0..PACKET_DATA_SIZE-1] of byte);
2: (Sign,ChID:byte; SEQ,Len:word);
3: (fix:FLAP_HDR;
SNAC:SNAC_HDR;
SNAC_BODY:array[0..PACKET_DATA_SIZE-1] of byte);
end;
implementation
end.
|