(* Miranda IM: the free IM client for Microsoft* Windows* Copyright 2000-2003 Miranda ICQ/IM project, all portions of this codebase are copyrighted to the people listed in contributors.txt. 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. *) {$IFNDEF M_PROTOCOLS} {$DEFINE M_PROTOCOLS} const ACKTYPE_MESSAGE = 0; ACKTYPE_URL = 1; ACKTYPE_FILE = 2; ACKTYPE_CHAT = 3; ACKTYPE_AWAYMSG = 4; ACKTYPE_AUTHREQ = 5; ACKTYPE_ADDED = 6; ACKTYPE_GETINFO = 7; ACKTYPE_SETINFO = 8; ACKTYPE_LOGIN = 9; ACKTYPE_SEARCH = 10; ACKTYPE_NEWUSER = 11; ACKTYPE_STATUS = 12; ACKTYPE_CONTACTS = 13; //send/recv of contacts ACKRESULT_SUCCESS = 0; ACKRESULT_FAILED = 1; //'in progress' result codes: ACKRESULT_CONNECTING = 100; ACKRESULT_CONNECTED = 101; ACKRESULT_INITIALISING = 102; ACKRESULT_SENTREQUEST = 103; // waiting for reply... ACKRESULT_DATA = 104; // blob of file data sent/recved, or search result ACKRESULT_NEXTFILE = 105; // file transfer went to next file ACKRESULT_FILERESUME = 106; // a file is about to be received, see PS_FILERESUME ACKRESULT_DENIED = 107; // a file send has been denied (0.3a + only) // for PROTOCOLDESCRIPTOR.type PROTOTYPE_PROTOCOL = 1000; PROTOTYPE_ENCRYPTION = 2000; PROTOTYPE_FILTER = 3000; PROTOTYPE_TRANSLATION = 4000; PROTOTYPE_OTHER = 10000;//avoid using this if at all possible type PCCSDATA = ^TCCSDATA; TCCSDATA = record hContact: THandle; szProtoService: PChar; // a PS_* constant wParam: WPARAM; lParam: LPARAM; end; PACKDATA = ^TACKDATA; TACKDATA = record cbSize: int; szModule: PChar; // the name of the protocol module which initiated this ack hContact: THandle; type_: int; // an ACKTYPE_* constant result_: int; // an ACKRESULT_* constant hProcess: THandle; // caller defined seq, I mean process code lParam: LPARAM; // caller defined data end; // when type=ACKTYPE_FILE and (result=ACKRESULT_DATA or result=ACKRESULT_FILERESUME) PPROTOFILETRANSFERSTATUS = ^TPROTOFILETRANSFERSTATUS; TPROTOFILETRANSFERSTATUS = record cbSize: int; hContact: THandle; sending: int; // true if sending, false if receiving files: PChar; // pointer to an array of pchar's totalFiles: int; currentFileNumber: int; totalBytes: LongInt; totalProgress: LongInt; workingDir: PChar; currentFile: PChar; currentFileSize: LongInt; currentFileProgress: LongInt; currentFileTime: LongInt; // UNIX time end; // for registering a protocol, enumeration PPROTOCOLDESCRIPTOR = ^TPROTOCOLDESCRIPTOR; TPROTOCOLDESCRIPTOR = record cbSize: int; szName: PChar; // unique name of module type_: int; // a PROTOTYPE_* constant end; const { wParam : 0 lParam : Pointer to an initalised CSSDATA structure Affect : Send a general request thru the protocol chain for a contact Return : the return value documented in the PS_* def (m_protosvc.inc) } MS_PROTO_CALLCONTACTSERVICE = 'Proto/CallContactService'; { wParam : 0 lParam : Pointer to an initalised TACKDATA structure Affect : a general 'ack', see notes Notes : Just because defs are here doesn't mean they will be sent read the docs for the function you are calling to see what replies you will get. } ME_PROTO_ACK = 'Proto/Ack'; { wParam : pointer to an int to store number of protocols lParam : Pointer to an an array of PPROTOCOLDESCRIPTOR pointers Affect : Enumerate the currently running protocols, see notes Returns: 0 on success, [non zero] on failure Notes : Neither wParam/lParam maybe NULL(0), the list returned by this service is the protocol modules currently installed and running, it is not a complete list of protocols that have ever been installed. - A protocol module does not have to be a protocol running thru the internet, it can be a vast number of things } MS_PROTO_ENUMPROTOCOLS = 'Proto/EnumProtocols'; { wParam : 0 lParam : Pointer to null terminated string containing protocol name Affect : Determines if a protocol is running or not. Returns: A pointer to the PPROTOCOLDESCRIPTOR if the protocol is loaded or NULL(0) if it isn't } MS_PROTO_ISPROTOCOLLOADED = 'Proto/IsProtocolLoaded'; { wParam : HCONTACT lParam : Pointer to a null terminated string containing a name Affect : Determine whether the given contact has the given protocol in it's chain. Returns : 0 if the protocol isn't in the chain, [non zero] if it is } MS_PROTO_ISPROTOONCONTACT = 'Proto/IsProtoOnContact'; { wParam : HCONTACT lParam : 0 Affect : Gets the network-level protocol associated with a contact Returns: a PChar pointing to the ASCIIZ name of the protocol or NULL(0) if the contact has no protocol, There's no need to dispsose the returned string. - This is the name of the module that actually accesses the network for that contact. } MS_PROTO_GETCONTACTBASEPROTO = 'Proto/GetContactBaseProto'; {$ENDIF}