Rambler's Top100
Рейтинг@Mail.ru

КомпьюТоп - каталог компьютерных сайтов





































































 
    вернуться назад Шутка...
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.