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  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #ifndef _OSL_SOCKET_H_
21 #define _OSL_SOCKET_H_
22 
23 #include <rtl/ustring.h>
24 #include <rtl/byteseq.h>
25 
26 #include <osl/time.h>
27 #include <rtl/tencinfo.h>
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 /* error returns */
34 #define OSL_INADDR_NONE 0xffffffff
35 #define OSL_INVALID_PORT (-1)
36 #define OSL_INVALID_IPX_SOCKET_NO 0xffffffff
37 
41 typedef struct oslSocketAddrImpl * oslSocketAddr;
42 
43 
47 typedef enum {
49  osl_Socket_FamilyIpx, /* Novell IPX/SPX */
50  osl_Socket_FamilyInvalid, /* always last entry in enum! */
53 
57 typedef enum {
58  osl_Socket_ProtocolIp, /* for all af_inet */
59  osl_Socket_ProtocolIpx, /* af_ipx datagram sockets (IPX) */
60  osl_Socket_ProtocolSpx, /* af_ipx seqpacket or stream for SPX */
61  osl_Socket_ProtocolSpxII, /* af_ipx seqpacket or stream for SPX II */
64 } oslProtocol;
65 
66 
70 typedef enum {
76  osl_Socket_TypeInvalid, /* always last entry in enum! */
79 
80 
84 typedef enum {
103  osl_Socket_OptionInvalid, /* always last entry in enum! */
106 
110 typedef enum {
113  osl_Socket_LevelInvalid, /* always last entry in enum! */
116 
117 
121 typedef enum {
127  osl_Socket_MsgInvalid, /* always last entry in enum! */
130 
134 typedef enum {
138  osl_Socket_DirInvalid, /* always last entry in enum! */
141 
144 typedef enum {
145  osl_Socket_E_None, /* no error */
146  osl_Socket_E_NotSocket, /* Socket operation on non-socket */
147  osl_Socket_E_DestAddrReq, /* Destination address required */
148  osl_Socket_E_MsgSize, /* Message too long */
149  osl_Socket_E_Prototype, /* Protocol wrong type for socket */
150  osl_Socket_E_NoProtocol, /* Protocol not available */
151  osl_Socket_E_ProtocolNoSupport, /* Protocol not supported */
152  osl_Socket_E_TypeNoSupport, /* Socket type not supported */
153  osl_Socket_E_OpNotSupport, /* Operation not supported on socket */
154  osl_Socket_E_PfNoSupport, /* Protocol family not supported */
155  osl_Socket_E_AfNoSupport, /* Address family not supported by */
156  /* protocol family */
157  osl_Socket_E_AddrInUse, /* Address already in use */
158  osl_Socket_E_AddrNotAvail, /* Can't assign requested address */
159  osl_Socket_E_NetDown, /* Network is down */
160  osl_Socket_E_NetUnreachable, /* Network is unreachable */
161  osl_Socket_E_NetReset, /* Network dropped connection because */
162  /* of reset */
163  osl_Socket_E_ConnAborted, /* Software caused connection abort */
164  osl_Socket_E_ConnReset, /* Connection reset by peer */
165  osl_Socket_E_NoBufferSpace, /* No buffer space available */
166  osl_Socket_E_IsConnected, /* Socket is already connected */
167  osl_Socket_E_NotConnected, /* Socket is not connected */
168  osl_Socket_E_Shutdown, /* Can't send after socket shutdown */
169  osl_Socket_E_TooManyRefs, /* Too many references: can't splice */
170  osl_Socket_E_TimedOut, /* Connection timed out */
171  osl_Socket_E_ConnRefused, /* Connection refused */
172  osl_Socket_E_HostDown, /* Host is down */
173  osl_Socket_E_HostUnreachable, /* No route to host */
174  osl_Socket_E_WouldBlock, /* call would block on non-blocking socket */
175  osl_Socket_E_Already, /* operation already in progress */
176  osl_Socket_E_InProgress, /* operation now in progress */
177  osl_Socket_E_InvalidError, /* unmapped error: always last entry in enum! */
180 
183 typedef enum {
184  osl_Socket_Ok, /* successful completion */
185  osl_Socket_Error, /* error occurred, check osl_getLastSocketError() for details */
186  osl_Socket_TimedOut, /* blocking operation timed out */
187  osl_Socket_Interrupted, /* blocking operation was interrupted */
188  osl_Socket_InProgress, /* nonblocking operation is in progress */
191 
194 
206 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_createEmptySocketAddr(
207  oslAddrFamily Family);
208 
209 
212 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_copySocketAddr(
213  oslSocketAddr Addr);
214 
220  oslSocketAddr Addr1, oslSocketAddr Addr2);
221 
227 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_resolveHostname(
228  rtl_uString *strHostname);
229 
239 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_createInetBroadcastAddr (
240  rtl_uString *strDottedAddr, sal_Int32 Port);
241 
242 
250 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_createInetSocketAddr (
251  rtl_uString *strDottedAddr, sal_Int32 Port);
252 
253 
258  oslSocketAddr Addr);
259 
264 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_getServicePort(
265  rtl_uString *strServicename, rtl_uString *strProtocol);
266 
267 
268 
274  oslSocketAddr Addr);
275 
276 
281 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_getInetPortOfSocketAddr(
282  oslSocketAddr Addr);
283 
284 
290  oslSocketAddr Addr, sal_Int32 Port);
291 
292 
298  oslSocketAddr Addr, rtl_uString **strHostname);
299 
300 
309  oslSocketAddr Addr, rtl_uString **strDottedInetAddr);
310 
314  oslSocketAddr Addr, sal_Sequence *pByteSeq );
315 
322  oslSocketAddr Addr, sal_Sequence **ppByteSeq );
323 
324 /*
325  Opaque datatype HostAddr.
326 */
327 typedef struct oslHostAddrImpl * oslHostAddr;
328 
329 
335 SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_createHostAddr(
336  rtl_uString *strHostname, const oslSocketAddr Addr);
337 
338 
346 SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_createHostAddrByName(rtl_uString *strHostname);
347 
348 
356 SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_createHostAddrByAddr(const oslSocketAddr Addr);
357 
358 
362 SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_copyHostAddr(const oslHostAddr Addr);
363 
364 
368 SAL_DLLPUBLIC void SAL_CALL osl_destroyHostAddr(oslHostAddr Addr);
369 
370 
374 SAL_DLLPUBLIC void SAL_CALL osl_getHostnameOfHostAddr(const oslHostAddr Addr, rtl_uString **strHostname);
375 
376 
380 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_getSocketAddrOfHostAddr(const oslHostAddr Addr);
381 
387 SAL_DLLPUBLIC oslSocketResult SAL_CALL osl_getLocalHostname(rtl_uString **strLocalHostname);
388 
389 
397 /*-***************************************************************************/
398 /* oslSocket */
399 /*-***************************************************************************/
400 
401 typedef struct oslSocketImpl * oslSocket;
402 
405 SAL_DLLPUBLIC void SAL_CALL osl_acquireSocket( oslSocket Socket );
406 
412 SAL_DLLPUBLIC void SAL_CALL osl_releaseSocket( oslSocket Socket );
413 
419 SAL_DLLPUBLIC oslSocket SAL_CALL osl_createSocket(
420  oslAddrFamily Family,
421  oslSocketType Type,
422  oslProtocol Protocol);
423 
430 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_getLocalAddrOfSocket(oslSocket Socket);
431 
438 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_getPeerAddrOfSocket(oslSocket Socket);
439 
447  oslSocket Socket,
448  oslSocketAddr Addr);
449 
462  oslSocket Socket,
463  oslSocketAddr Addr,
464  const TimeValue* pTimeout);
465 
466 
475  oslSocket Socket,
476  sal_Int32 MaxPendingConnections);
477 
478 
486  (oslSocket Socket,
487  oslSocketAddr* pAddr);
488 
509 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_receiveSocket(
510  oslSocket Socket,
511  void* pBuffer,
512  sal_uInt32 BytesToRead,
513  oslSocketMsgFlag Flag);
514 
537 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_receiveFromSocket(
538  oslSocket Socket,
539  oslSocketAddr SenderAddr,
540  void* pBuffer,
541  sal_uInt32 BufferSize,
542  oslSocketMsgFlag Flag);
543 
562 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_sendSocket(
563  oslSocket Socket,
564  const void* pBuffer,
565  sal_uInt32 BytesToSend,
566  oslSocketMsgFlag Flag);
567 
593 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_sendToSocket(
594  oslSocket Socket,
595  oslSocketAddr ReceiverAddr,
596  const void* pBuffer,
597  sal_uInt32 BytesToSend,
598  oslSocketMsgFlag Flag);
599 
612  oslSocket Socket, const TimeValue* pTimeout);
613 
625  oslSocket Socket, const TimeValue* pTimeout);
626 
637  oslSocket Socket, const TimeValue* pTimeout);
638 
649 SAL_DLLPUBLIC sal_Bool SAL_CALL osl_shutdownSocket(oslSocket Socket,
650  oslSocketDirection Direction);
651 
736 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_getSocketOption( oslSocket Socket,
737  oslSocketOptionLevel Level,
738  oslSocketOption Option,
739  void* pBuffer,
740  sal_uInt32 BufferLen);
741 
762 SAL_DLLPUBLIC sal_Bool SAL_CALL osl_setSocketOption( oslSocket Socket,
763  oslSocketOptionLevel Level,
764  oslSocketOption Option,
765  void* pBuffer,
766  sal_uInt32 BufferLen);
767 
775  oslSocket Socket, sal_Bool On);
776 
777 
783  oslSocket Socket);
784 
785 
799  oslSocket Socket);
800 
805  oslSocket Socket, rtl_uString **strError);
806 
813  oslSocket Socket);
814 
817 typedef struct oslSocketSetImpl * oslSocketSet;
818 
822 SAL_DLLPUBLIC oslSocketSet SAL_CALL osl_createSocketSet(void);
823 
826 SAL_DLLPUBLIC void SAL_CALL osl_destroySocketSet(oslSocketSet Set);
827 
831 SAL_DLLPUBLIC void SAL_CALL osl_clearSocketSet(oslSocketSet Set);
832 
833 
838 SAL_DLLPUBLIC void SAL_CALL osl_addToSocketSet(oslSocketSet Set, oslSocket Socket);
839 
844 SAL_DLLPUBLIC void SAL_CALL osl_removeFromSocketSet(oslSocketSet Set, oslSocket Socket);
845 
851 SAL_DLLPUBLIC sal_Bool SAL_CALL osl_isInSocketSet(oslSocketSet Set, oslSocket Socket);
852 
868 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_demultiplexSocketEvents(oslSocketSet IncomingSet,
869  oslSocketSet OutgoingSet,
870  oslSocketSet OutOfBandSet,
871  const TimeValue* pTimeout);
872 
875 SAL_DLLPUBLIC void SAL_CALL osl_closeSocket(oslSocket Socket);
876 
877 
886 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_readSocket( oslSocket Socket, void *pBuffer, sal_Int32 nSize );
887 
888 
896 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_writeSocket( oslSocket Socket, const void *pBuffer, sal_Int32 nSize );
897 
903 #ifdef __cplusplus
904 }
905 #endif
906 
907 #endif /* _OSL_SOCKET_H_ */
908 
909 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */