My Project
UDK 3.2.7 C/C++ API Reference
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
socket.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*************************************************************************
3  *
4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5  *
6  * Copyright 2000, 2010 Oracle and/or its affiliates.
7  *
8  * OpenOffice.org - a multi-platform office productivity suite
9  *
10  * This file is part of OpenOffice.org.
11  *
12  * OpenOffice.org is free software: you can redistribute it and/or modify
13  * it under the terms of the GNU Lesser General Public License version 3
14  * only, as published by the Free Software Foundation.
15  *
16  * OpenOffice.org is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Lesser General Public License version 3 for more details
20  * (a copy is included in the LICENSE file that accompanied this code).
21  *
22  * You should have received a copy of the GNU Lesser General Public License
23  * version 3 along with OpenOffice.org. If not, see
24  * <http://www.openoffice.org/license.html>
25  * for a copy of the LGPLv3 License.
26  *
27  ************************************************************************/
28 
29 #ifndef _OSL_SOCKET_H_
30 #define _OSL_SOCKET_H_
31 
32 #include <rtl/ustring.h>
33 #include <rtl/byteseq.h>
34 
35 #include <osl/time.h>
36 #include <rtl/tencinfo.h>
37 
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41 
42 /* error returns */
43 #define OSL_INADDR_NONE 0xffffffff
44 #define OSL_INVALID_PORT (-1)
45 #define OSL_INVALID_IPX_SOCKET_NO 0xffffffff
46 
50 typedef struct oslSocketAddrImpl * oslSocketAddr;
51 
52 
56 typedef enum {
58  osl_Socket_FamilyIpx, /* Novell IPX/SPX */
59  osl_Socket_FamilyInvalid, /* always last entry in enum! */
62 
66 typedef enum {
67  osl_Socket_ProtocolIp, /* for all af_inet */
68  osl_Socket_ProtocolIpx, /* af_ipx datagram sockets (IPX) */
69  osl_Socket_ProtocolSpx, /* af_ipx seqpacket or stream for SPX */
70  osl_Socket_ProtocolSpxII, /* af_ipx seqpacket or stream for SPX II */
73 } oslProtocol;
74 
75 
79 typedef enum {
85  osl_Socket_TypeInvalid, /* always last entry in enum! */
88 
89 
93 typedef enum {
112  osl_Socket_OptionInvalid, /* always last entry in enum! */
115 
119 typedef enum {
122  osl_Socket_LevelInvalid, /* always last entry in enum! */
125 
126 
130 typedef enum {
136  osl_Socket_MsgInvalid, /* always last entry in enum! */
139 
143 typedef enum {
147  osl_Socket_DirInvalid, /* always last entry in enum! */
150 
153 typedef enum {
154  osl_Socket_E_None, /* no error */
155  osl_Socket_E_NotSocket, /* Socket operation on non-socket */
156  osl_Socket_E_DestAddrReq, /* Destination address required */
157  osl_Socket_E_MsgSize, /* Message too long */
158  osl_Socket_E_Prototype, /* Protocol wrong type for socket */
159  osl_Socket_E_NoProtocol, /* Protocol not available */
160  osl_Socket_E_ProtocolNoSupport, /* Protocol not supported */
161  osl_Socket_E_TypeNoSupport, /* Socket type not supported */
162  osl_Socket_E_OpNotSupport, /* Operation not supported on socket */
163  osl_Socket_E_PfNoSupport, /* Protocol family not supported */
164  osl_Socket_E_AfNoSupport, /* Address family not supported by */
165  /* protocol family */
166  osl_Socket_E_AddrInUse, /* Address already in use */
167  osl_Socket_E_AddrNotAvail, /* Can't assign requested address */
168  osl_Socket_E_NetDown, /* Network is down */
169  osl_Socket_E_NetUnreachable, /* Network is unreachable */
170  osl_Socket_E_NetReset, /* Network dropped connection because */
171  /* of reset */
172  osl_Socket_E_ConnAborted, /* Software caused connection abort */
173  osl_Socket_E_ConnReset, /* Connection reset by peer */
174  osl_Socket_E_NoBufferSpace, /* No buffer space available */
175  osl_Socket_E_IsConnected, /* Socket is already connected */
176  osl_Socket_E_NotConnected, /* Socket is not connected */
177  osl_Socket_E_Shutdown, /* Can't send after socket shutdown */
178  osl_Socket_E_TooManyRefs, /* Too many references: can't splice */
179  osl_Socket_E_TimedOut, /* Connection timed out */
180  osl_Socket_E_ConnRefused, /* Connection refused */
181  osl_Socket_E_HostDown, /* Host is down */
182  osl_Socket_E_HostUnreachable, /* No route to host */
183  osl_Socket_E_WouldBlock, /* call would block on non-blocking socket */
184  osl_Socket_E_Already, /* operation already in progress */
185  osl_Socket_E_InProgress, /* operation now in progress */
186  osl_Socket_E_InvalidError, /* unmapped error: always last entry in enum! */
189 
192 typedef enum {
193  osl_Socket_Ok, /* successful completion */
194  osl_Socket_Error, /* error occurred, check osl_getLastSocketError() for details */
195  osl_Socket_TimedOut, /* blocking operation timed out */
196  osl_Socket_Interrupted, /* blocking operation was interrupted */
197  osl_Socket_InProgress, /* nonblocking operation is in progress */
200 
203 
215 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_createEmptySocketAddr(
216  oslAddrFamily Family);
217 
218 
221 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_copySocketAddr(
222  oslSocketAddr Addr);
223 
229  oslSocketAddr Addr1, oslSocketAddr Addr2);
230 
236 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_resolveHostname(
237  rtl_uString *strHostname);
238 
248 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_createInetBroadcastAddr (
249  rtl_uString *strDottedAddr, sal_Int32 Port);
250 
251 
259 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_createInetSocketAddr (
260  rtl_uString *strDottedAddr, sal_Int32 Port);
261 
262 
267  oslSocketAddr Addr);
268 
273 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_getServicePort(
274  rtl_uString *strServicename, rtl_uString *strProtocol);
275 
276 
277 
283  oslSocketAddr Addr);
284 
285 
290 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_getInetPortOfSocketAddr(
291  oslSocketAddr Addr);
292 
293 
299  oslSocketAddr Addr, sal_Int32 Port);
300 
301 
307  oslSocketAddr Addr, rtl_uString **strHostname);
308 
309 
318  oslSocketAddr Addr, rtl_uString **strDottedInetAddr);
319 
323  oslSocketAddr Addr, sal_Sequence *pByteSeq );
324 
331  oslSocketAddr Addr, sal_Sequence **ppByteSeq );
332 
333 /*
334  Opaque datatype HostAddr.
335 */
336 typedef struct oslHostAddrImpl * oslHostAddr;
337 
338 
344 SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_createHostAddr(
345  rtl_uString *strHostname, const oslSocketAddr Addr);
346 
347 
355 SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_createHostAddrByName(rtl_uString *strHostname);
356 
357 
365 SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_createHostAddrByAddr(const oslSocketAddr Addr);
366 
367 
371 SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_copyHostAddr(const oslHostAddr Addr);
372 
373 
377 SAL_DLLPUBLIC void SAL_CALL osl_destroyHostAddr(oslHostAddr Addr);
378 
379 
383 SAL_DLLPUBLIC void SAL_CALL osl_getHostnameOfHostAddr(const oslHostAddr Addr, rtl_uString **strHostname);
384 
385 
389 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_getSocketAddrOfHostAddr(const oslHostAddr Addr);
390 
396 SAL_DLLPUBLIC oslSocketResult SAL_CALL osl_getLocalHostname(rtl_uString **strLocalHostname);
397 
398 
406 /*-***************************************************************************/
407 /* oslSocket */
408 /*-***************************************************************************/
409 
410 typedef struct oslSocketImpl * oslSocket;
411 
414 SAL_DLLPUBLIC void SAL_CALL osl_acquireSocket( oslSocket Socket );
415 
421 SAL_DLLPUBLIC void SAL_CALL osl_releaseSocket( oslSocket Socket );
422 
428 SAL_DLLPUBLIC oslSocket SAL_CALL osl_createSocket(
429  oslAddrFamily Family,
430  oslSocketType Type,
431  oslProtocol Protocol);
432 
439 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_getLocalAddrOfSocket(oslSocket Socket);
440 
447 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_getPeerAddrOfSocket(oslSocket Socket);
448 
456  oslSocket Socket,
457  oslSocketAddr Addr);
458 
471  oslSocket Socket,
472  oslSocketAddr Addr,
473  const TimeValue* pTimeout);
474 
475 
484  oslSocket Socket,
485  sal_Int32 MaxPendingConnections);
486 
487 
495  (oslSocket Socket,
496  oslSocketAddr* pAddr);
497 
518 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_receiveSocket(
519  oslSocket Socket,
520  void* pBuffer,
521  sal_uInt32 BytesToRead,
522  oslSocketMsgFlag Flag);
523 
546 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_receiveFromSocket(
547  oslSocket Socket,
548  oslSocketAddr SenderAddr,
549  void* pBuffer,
550  sal_uInt32 BufferSize,
551  oslSocketMsgFlag Flag);
552 
571 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_sendSocket(
572  oslSocket Socket,
573  const void* pBuffer,
574  sal_uInt32 BytesToSend,
575  oslSocketMsgFlag Flag);
576 
602 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_sendToSocket(
603  oslSocket Socket,
604  oslSocketAddr ReceiverAddr,
605  const void* pBuffer,
606  sal_uInt32 BytesToSend,
607  oslSocketMsgFlag Flag);
608 
621  oslSocket Socket, const TimeValue* pTimeout);
622 
634  oslSocket Socket, const TimeValue* pTimeout);
635 
646  oslSocket Socket, const TimeValue* pTimeout);
647 
658 SAL_DLLPUBLIC sal_Bool SAL_CALL osl_shutdownSocket(oslSocket Socket,
659  oslSocketDirection Direction);
660 
745 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_getSocketOption( oslSocket Socket,
746  oslSocketOptionLevel Level,
747  oslSocketOption Option,
748  void* pBuffer,
749  sal_uInt32 BufferLen);
750 
771 SAL_DLLPUBLIC sal_Bool SAL_CALL osl_setSocketOption( oslSocket Socket,
772  oslSocketOptionLevel Level,
773  oslSocketOption Option,
774  void* pBuffer,
775  sal_uInt32 BufferLen);
776 
784  oslSocket Socket, sal_Bool On);
785 
786 
792  oslSocket Socket);
793 
794 
808  oslSocket Socket);
809 
814  oslSocket Socket, rtl_uString **strError);
815 
822  oslSocket Socket);
823 
826 typedef struct oslSocketSetImpl * oslSocketSet;
827 
831 SAL_DLLPUBLIC oslSocketSet SAL_CALL osl_createSocketSet(void);
832 
835 SAL_DLLPUBLIC void SAL_CALL osl_destroySocketSet(oslSocketSet Set);
836 
840 SAL_DLLPUBLIC void SAL_CALL osl_clearSocketSet(oslSocketSet Set);
841 
842 
847 SAL_DLLPUBLIC void SAL_CALL osl_addToSocketSet(oslSocketSet Set, oslSocket Socket);
848 
853 SAL_DLLPUBLIC void SAL_CALL osl_removeFromSocketSet(oslSocketSet Set, oslSocket Socket);
854 
860 SAL_DLLPUBLIC sal_Bool SAL_CALL osl_isInSocketSet(oslSocketSet Set, oslSocket Socket);
861 
877 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_demultiplexSocketEvents(oslSocketSet IncomingSet,
878  oslSocketSet OutgoingSet,
879  oslSocketSet OutOfBandSet,
880  const TimeValue* pTimeout);
881 
884 SAL_DLLPUBLIC void SAL_CALL osl_closeSocket(oslSocket Socket);
885 
886 
895 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_readSocket( oslSocket Socket, void *pBuffer, sal_Int32 nSize );
896 
897 
905 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_writeSocket( oslSocket Socket, const void *pBuffer, sal_Int32 nSize );
906 
912 #ifdef __cplusplus
913 }
914 #endif
915 
916 #endif /* _OSL_SOCKET_H_ */
917 
918 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */