00001 /* 00002 * Copyright (C) 2006, Jose Renato Santos. 00003 * 00004 * This file may be distributed under the terms of the Q Public License 00005 * as defined by Trolltech AS of Norway and appearing in the file 00006 * LICENSE.QPL included in the packaging of this file. 00007 * 00008 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING 00009 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00010 * PURPOSE. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, 00011 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING 00012 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 00013 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 00014 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 00015 * 00016 */ 00017 00018 /////////////////////////////////////////////////////////////////////////////// 00019 // vsisocket.h: Definition of class that implements VSI socket 00020 // (VSI: Virtual System Interface) 00021 /////////////////////////////////////////////////////////////////////////////// 00022 00023 #if !defined __VSISOCKET_H_ 00024 #define __VSISOCKET_H_ 00025 00026 #include "vsitypesint.h" 00027 00028 const u32 VSI_SOCKET_UNDEFINED_IP_ADDRESS = 0; 00029 00030 typedef struct vsiIPaddress 00031 { 00032 u32 Host; 00033 u16 Port; 00034 }vsiIPaddress; 00035 00036 u32 vsiGetIPaddress (char* HostName); 00037 00038 /////////////////////////////////////////////////////////////////////////////// 00039 class CvsiUDPsocket 00040 { 00041 public: 00042 CvsiUDPsocket(); 00043 ~CvsiUDPsocket(); 00044 int Initialize (vsiIPaddress* LocalAddress); 00045 int Close(); 00046 int IsOpen(); 00047 int Send(vsiIPaddress* Target, char* Buffer, int Size); 00048 int Receive(vsiIPaddress* Source, char* Buffer, int* Size); 00049 private: 00050 int m_Socket; 00051 }; 00052 00053 /////////////////////////////////////////////////////////////////////////////// 00054 class CvsiTCPsocket 00055 { 00056 public: 00057 friend class CvsiTCPwait; 00058 CvsiTCPsocket(); 00059 ~CvsiTCPsocket(); 00060 int Connect( vsiIPaddress* Target ); 00061 int Close(); 00062 int IsOpen(); 00063 int Send( char* Buffer, int Size ); 00064 int Receive( char* Buffer, int Size ); 00065 00066 private: 00067 int m_Socket; 00068 }; 00069 00070 /////////////////////////////////////////////////////////////////////////////// 00071 class CvsiTCPwait 00072 { 00073 public: 00074 CvsiTCPwait(); 00075 ~CvsiTCPwait(); 00076 int Initialize (vsiIPaddress* LocalAddress, int Backlog); 00077 int Close(); 00078 int IsOpen(); 00079 int Accept (CvsiTCPsocket* TCPsocket, vsiIPaddress* Source); 00080 private: 00081 int m_Socket; 00082 }; 00083 00084 00085 #endif // __VSISOCKET_H_