From 48540940b6c28bb4378abfeb500ec45a625b37b6 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Tue, 15 May 2012 10:38:20 +0000 Subject: initial commit git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- include/delphi/m_protocols.inc | 180 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 include/delphi/m_protocols.inc (limited to 'include/delphi/m_protocols.inc') diff --git a/include/delphi/m_protocols.inc b/include/delphi/m_protocols.inc new file mode 100644 index 0000000000..f198d40a8b --- /dev/null +++ b/include/delphi/m_protocols.inc @@ -0,0 +1,180 @@ +(* + +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} \ No newline at end of file -- cgit v1.2.3