1 /* 2 * Internet Messaging APIs 3 * 4 * Copyright 2006 Robert Shearman for CodeWeavers 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 */ 20 21 #pragma once 22 23 #include "winsock2.h" 24 #include "winuser.h" 25 #include "objbase.h" 26 #include "imnxport.h" 27 28 typedef struct InternetTransport InternetTransport; 29 30 typedef void (*INETXPORT_COMPLETION_FUNCTION)(IInternetTransport *, char *, int); 31 32 struct InternetTransport 33 { 34 union 35 { 36 const IInternetTransportVtbl *vtbl; 37 const ISMTPTransport2Vtbl *vtblSMTP2; 38 const IIMAPTransportVtbl *vtblIMAP; 39 const IPOP3TransportVtbl *vtblPOP3; 40 } u; 41 42 ITransportCallback *pCallback; 43 IXPSTATUS Status; 44 INETSERVER ServerInfo; 45 SOCKET Socket; 46 boolean fCommandLogging; 47 boolean fInitialised; 48 INETXPORT_COMPLETION_FUNCTION fnCompletion; 49 char *pBuffer; 50 int cbBuffer; 51 int iCurrentBufferOffset; 52 HWND hwnd; 53 }; 54 55 HRESULT InternetTransport_Init(InternetTransport *This) DECLSPEC_HIDDEN; 56 HRESULT InternetTransport_GetServerInfo(InternetTransport *This, LPINETSERVER pInetServer) DECLSPEC_HIDDEN; 57 HRESULT InternetTransport_InetServerFromAccount(InternetTransport *This, 58 IImnAccount *pAccount, LPINETSERVER pInetServer) DECLSPEC_HIDDEN; 59 HRESULT InternetTransport_Connect(InternetTransport *This, 60 LPINETSERVER pInetServer, boolean fAuthenticate, boolean fCommandLogging) DECLSPEC_HIDDEN; 61 HRESULT InternetTransport_HandsOffCallback(InternetTransport *This) DECLSPEC_HIDDEN; 62 HRESULT InternetTransport_DropConnection(InternetTransport *This) DECLSPEC_HIDDEN; 63 HRESULT InternetTransport_GetStatus(InternetTransport *This, 64 IXPSTATUS *pCurrentStatus) DECLSPEC_HIDDEN; 65 HRESULT InternetTransport_ChangeStatus(InternetTransport *This, IXPSTATUS Status) DECLSPEC_HIDDEN; 66 HRESULT InternetTransport_ReadLine(InternetTransport *This, 67 INETXPORT_COMPLETION_FUNCTION fnCompletion) DECLSPEC_HIDDEN; 68 HRESULT InternetTransport_Write(InternetTransport *This, const char *pvData, 69 int cbSize, INETXPORT_COMPLETION_FUNCTION fnCompletion) DECLSPEC_HIDDEN; 70 HRESULT InternetTransport_DoCommand(InternetTransport *This, 71 LPCSTR pszCommand, INETXPORT_COMPLETION_FUNCTION fnCompletion) DECLSPEC_HIDDEN; 72 73 BOOL InternetTransport_RegisterClass(HINSTANCE hInstance) DECLSPEC_HIDDEN; 74 void InternetTransport_UnregisterClass(HINSTANCE hInstance) DECLSPEC_HIDDEN; 75 76 HRESULT MimeBody_create(IUnknown *outer, void **obj) DECLSPEC_HIDDEN; 77 HRESULT MimeAllocator_create(IUnknown *outer, void **obj) DECLSPEC_HIDDEN; 78 HRESULT MimeMessage_create(IUnknown *outer, void **obj) DECLSPEC_HIDDEN; 79 HRESULT MimeSecurity_create(IUnknown *outer, void **obj) DECLSPEC_HIDDEN; 80 HRESULT VirtualStream_create(IUnknown *outer, void **obj) DECLSPEC_HIDDEN; 81 HRESULT MimeHtmlProtocol_create(IUnknown *outer, void **obj) DECLSPEC_HIDDEN; 82 83 HRESULT MimeInternational_Construct(IMimeInternational **internat) DECLSPEC_HIDDEN; 84 85 HRESULT SMTPTransportCF_Create(REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN; 86 HRESULT IMAPTransportCF_Create(REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN; 87 HRESULT POP3TransportCF_Create(REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN; 88