LibreOffice
LibreOffice 5.0 SDK 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 INCLUDED_OSL_SOCKET_H
21 #define INCLUDED_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 
40 typedef struct oslSocketAddrImpl * oslSocketAddr;
41 
42 
46 typedef enum {
48  osl_Socket_FamilyIpx, /* Novell IPX/SPX */
49  osl_Socket_FamilyInvalid, /* always last entry in enum! */
52 
56 typedef enum {
57  osl_Socket_ProtocolIp, /* for all af_inet */
58  osl_Socket_ProtocolIpx, /* af_ipx datagram sockets (IPX) */
59  osl_Socket_ProtocolSpx, /* af_ipx seqpacket or stream for SPX */
60  osl_Socket_ProtocolSpxII, /* af_ipx seqpacket or stream for SPX II */
63 } oslProtocol;
64 
65 
69 typedef enum {
75  osl_Socket_TypeInvalid, /* always last entry in enum! */
78 
79 
83 typedef enum {
102  osl_Socket_OptionInvalid, /* always last entry in enum! */
105 
109 typedef enum {
112  osl_Socket_LevelInvalid, /* always last entry in enum! */
115 
116 
120 typedef enum {
126  osl_Socket_MsgInvalid, /* always last entry in enum! */
129 
133 typedef enum {
137  osl_Socket_DirInvalid, /* always last entry in enum! */
140 
143 typedef enum {
144  osl_Socket_E_None, /* no error */
145  osl_Socket_E_NotSocket, /* Socket operation on non-socket */
146  osl_Socket_E_DestAddrReq, /* Destination address required */
147  osl_Socket_E_MsgSize, /* Message too long */
148  osl_Socket_E_Prototype, /* Protocol wrong type for socket */
149  osl_Socket_E_NoProtocol, /* Protocol not available */
150  osl_Socket_E_ProtocolNoSupport, /* Protocol not supported */
151  osl_Socket_E_TypeNoSupport, /* Socket type not supported */
152  osl_Socket_E_OpNotSupport, /* Operation not supported on socket */
153  osl_Socket_E_PfNoSupport, /* Protocol family not supported */
154  osl_Socket_E_AfNoSupport, /* Address family not supported by */
155  /* protocol family */
156  osl_Socket_E_AddrInUse, /* Address already in use */
157  osl_Socket_E_AddrNotAvail, /* Can't assign requested address */
158  osl_Socket_E_NetDown, /* Network is down */
159  osl_Socket_E_NetUnreachable, /* Network is unreachable */
160  osl_Socket_E_NetReset, /* Network dropped connection because */
161  /* of reset */
162  osl_Socket_E_ConnAborted, /* Software caused connection abort */
163  osl_Socket_E_ConnReset, /* Connection reset by peer */
164  osl_Socket_E_NoBufferSpace, /* No buffer space available */
165  osl_Socket_E_IsConnected, /* Socket is already connected */
166  osl_Socket_E_NotConnected, /* Socket is not connected */
167  osl_Socket_E_Shutdown, /* Can't send after socket shutdown */
168  osl_Socket_E_TooManyRefs, /* Too many references: can't splice */
169  osl_Socket_E_TimedOut, /* Connection timed out */
170  osl_Socket_E_ConnRefused, /* Connection refused */
171  osl_Socket_E_HostDown, /* Host is down */
172  osl_Socket_E_HostUnreachable, /* No route to host */
173  osl_Socket_E_WouldBlock, /* call would block on non-blocking socket */
174  osl_Socket_E_Already, /* operation already in progress */
175  osl_Socket_E_InProgress, /* operation now in progress */
176  osl_Socket_E_InvalidError, /* unmapped error: always last entry in enum! */
179 
182 typedef enum {
183  osl_Socket_Ok, /* successful completion */
184  osl_Socket_Error, /* error occurred, check osl_getLastSocketError() for details */
185  osl_Socket_TimedOut, /* blocking operation timed out */
186  osl_Socket_Interrupted, /* blocking operation was interrupted */
187  osl_Socket_InProgress, /* nonblocking operation is in progress */
190 
193 
205 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_createEmptySocketAddr(
206  oslAddrFamily Family);
207 
208 
211 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_copySocketAddr(
212  oslSocketAddr Addr);
213 
219  oslSocketAddr Addr1, oslSocketAddr Addr2);
220 
226 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_resolveHostname(
227  rtl_uString *strHostname);
228 
238 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_createInetBroadcastAddr (
239  rtl_uString *strDottedAddr, sal_Int32 Port);
240 
241 
249 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_createInetSocketAddr (
250  rtl_uString *strDottedAddr, sal_Int32 Port);
251 
252 
257  oslSocketAddr Addr);
258 
263 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_getServicePort(
264  rtl_uString *strServicename, rtl_uString *strProtocol);
265 
266 
267 
273  oslSocketAddr Addr);
274 
275 
280 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_getInetPortOfSocketAddr(
281  oslSocketAddr Addr);
282 
283 
290  oslSocketAddr Addr, sal_Int32 Port);
291 
292 
299  oslSocketAddr Addr, rtl_uString **strHostname);
300 
301 
311  oslSocketAddr Addr, rtl_uString **strDottedInetAddr);
312 
316  oslSocketAddr Addr, sal_Sequence *pByteSeq );
317 
325  oslSocketAddr Addr, sal_Sequence **ppByteSeq );
326 
327 /*
328  Opaque datatype HostAddr.
329 */
330 typedef struct oslHostAddrImpl * oslHostAddr;
331 
332 
338 SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_createHostAddr(
339  rtl_uString *strHostname, const oslSocketAddr Addr);
340 
341 
349 SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_createHostAddrByName(rtl_uString *strHostname);
350 
351 
359 SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_createHostAddrByAddr(const oslSocketAddr Addr);
360 
361 
365 SAL_DLLPUBLIC oslHostAddr SAL_CALL osl_copyHostAddr(const oslHostAddr Addr);
366 
367 
371 SAL_DLLPUBLIC void SAL_CALL osl_destroyHostAddr(oslHostAddr Addr);
372 
373 
377 SAL_DLLPUBLIC void SAL_CALL osl_getHostnameOfHostAddr(const oslHostAddr Addr, rtl_uString **strHostname);
378 
379 
383 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_getSocketAddrOfHostAddr(const oslHostAddr Addr);
384 
390 SAL_DLLPUBLIC oslSocketResult SAL_CALL osl_getLocalHostname(rtl_uString **strLocalHostname);
391 
392 
400 /*-***************************************************************************/
401 /* oslSocket */
402 /*-***************************************************************************/
403 
404 typedef struct oslSocketImpl * oslSocket;
405 
408 SAL_DLLPUBLIC void SAL_CALL osl_acquireSocket( oslSocket Socket );
409 
415 SAL_DLLPUBLIC void SAL_CALL osl_releaseSocket( oslSocket Socket );
416 
422 SAL_DLLPUBLIC oslSocket SAL_CALL osl_createSocket(
423  oslAddrFamily Family,
424  oslSocketType Type,
425  oslProtocol Protocol);
426 
433 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_getLocalAddrOfSocket(oslSocket Socket);
434 
441 SAL_DLLPUBLIC oslSocketAddr SAL_CALL osl_getPeerAddrOfSocket(oslSocket Socket);
442 
450  oslSocket Socket,
451  oslSocketAddr Addr);
452 
465  oslSocket Socket,
466  oslSocketAddr Addr,
467  const TimeValue* pTimeout);
468 
469 
479  oslSocket Socket,
480  sal_Int32 MaxPendingConnections);
481 
482 
491  (oslSocket Socket,
492  oslSocketAddr* pAddr);
493 
514 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_receiveSocket(
515  oslSocket Socket,
516  void* pBuffer,
517  sal_uInt32 BytesToRead,
518  oslSocketMsgFlag Flag);
519 
542 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_receiveFromSocket(
543  oslSocket Socket,
544  oslSocketAddr SenderAddr,
545  void* pBuffer,
546  sal_uInt32 BufferSize,
547  oslSocketMsgFlag Flag);
548 
567 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_sendSocket(
568  oslSocket Socket,
569  const void* pBuffer,
570  sal_uInt32 BytesToSend,
571  oslSocketMsgFlag Flag);
572 
598 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_sendToSocket(
599  oslSocket Socket,
600  oslSocketAddr ReceiverAddr,
601  const void* pBuffer,
602  sal_uInt32 BytesToSend,
603  oslSocketMsgFlag Flag);
604 
617  oslSocket Socket, const TimeValue* pTimeout);
618 
630  oslSocket Socket, const TimeValue* pTimeout);
631 
642  oslSocket Socket, const TimeValue* pTimeout);
643 
655 SAL_DLLPUBLIC sal_Bool SAL_CALL osl_shutdownSocket(oslSocket Socket,
656  oslSocketDirection Direction);
657 
742 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_getSocketOption( oslSocket Socket,
743  oslSocketOptionLevel Level,
744  oslSocketOption Option,
745  void* pBuffer,
746  sal_uInt32 BufferLen);
747 
768 SAL_DLLPUBLIC sal_Bool SAL_CALL osl_setSocketOption( oslSocket Socket,
769  oslSocketOptionLevel Level,
770  oslSocketOption Option,
771  void* pBuffer,
772  sal_uInt32 BufferLen);
773 
781  oslSocket Socket, sal_Bool On);
782 
783 
789  oslSocket Socket);
790 
791 
805  oslSocket Socket);
806 
812  oslSocket Socket, rtl_uString **strError);
813 
820  oslSocket Socket);
821 
824 typedef struct oslSocketSetImpl * oslSocketSet;
825 
829 SAL_DLLPUBLIC oslSocketSet SAL_CALL osl_createSocketSet(void);
830 
833 SAL_DLLPUBLIC void SAL_CALL osl_destroySocketSet(oslSocketSet Set);
834 
838 SAL_DLLPUBLIC void SAL_CALL osl_clearSocketSet(oslSocketSet Set);
839 
840 
845 SAL_DLLPUBLIC void SAL_CALL osl_addToSocketSet(oslSocketSet Set, oslSocket Socket);
846 
851 SAL_DLLPUBLIC void SAL_CALL osl_removeFromSocketSet(oslSocketSet Set, oslSocket Socket);
852 
858 SAL_DLLPUBLIC sal_Bool SAL_CALL osl_isInSocketSet(oslSocketSet Set, oslSocket Socket);
859 
875 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_demultiplexSocketEvents(oslSocketSet IncomingSet,
876  oslSocketSet OutgoingSet,
877  oslSocketSet OutOfBandSet,
878  const TimeValue* pTimeout);
879 
883 SAL_DLLPUBLIC void SAL_CALL osl_closeSocket(oslSocket Socket);
884 
885 
895 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_readSocket( oslSocket Socket, void *pBuffer, sal_Int32 nSize );
896 
897 
906 SAL_DLLPUBLIC sal_Int32 SAL_CALL osl_writeSocket( oslSocket Socket, const void *pBuffer, sal_Int32 nSize );
907 
913 #ifdef __cplusplus
914 }
915 #endif
916 
917 #endif // INCLUDED_OSL_SOCKET_H
918 
919 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */