LibreOffice
LibreOffice 5.2 SDK C/C++ API Reference
socket_decl.hxx
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_DECL_HXX
21 #define INCLUDED_OSL_SOCKET_DECL_HXX
22 
23 #include <sal/config.h>
24 
25 #include <cstddef>
26 
27 #include <osl/socket.h>
28 #include <rtl/ustring.hxx>
29 #include <rtl/byteseq.hxx>
30 
31 namespace osl
32 {
34 
39  class SocketAddr
40  {
41  protected:
43  public:
44 
47  inline SocketAddr();
48 
51  inline SocketAddr(const SocketAddr& Addr);
52 
58  inline SocketAddr(const oslSocketAddr Addr, __osl_socket_NoCopy nocopy );
59 
62  inline SocketAddr(oslSocketAddr Addr);
63 
69  inline SocketAddr( const ::rtl::OUString& strAddrOrHostName, sal_Int32 nPort );
70 
73  inline ~SocketAddr();
74 
79  inline bool is() const;
80 
89  inline ::rtl::OUString SAL_CALL getHostname( oslSocketResult *pResult = NULL ) const;
90 
93  inline bool SAL_CALL setHostname( const ::rtl::OUString &sDottedIpOrHostname );
94 
98  inline sal_Int32 SAL_CALL getPort() const;
99 
103  inline bool SAL_CALL setPort( sal_Int32 nPort );
104 
108  inline bool SAL_CALL setAddr( const ::rtl::ByteSequence & address );
109 
112  inline ::rtl::ByteSequence SAL_CALL getAddr( oslSocketResult *pResult = NULL ) const;
113 
116  inline SocketAddr & SAL_CALL operator= (oslSocketAddr Addr);
117 
120  inline SocketAddr & SAL_CALL operator= (const SocketAddr& Addr);
121 
126  inline SocketAddr & SAL_CALL assign( oslSocketAddr Addr, __osl_socket_NoCopy nocopy );
127 
130  inline bool SAL_CALL operator== (oslSocketAddr Addr) const;
131 
134  inline bool SAL_CALL operator== (const SocketAddr & Addr) const;
135 
138  inline oslSocketAddr SAL_CALL getHandle() const;
139 
145  static inline ::rtl::OUString SAL_CALL getLocalHostname( oslSocketResult *pResult = NULL);
146 
151  static inline void SAL_CALL resolveHostname(
152  const ::rtl::OUString & strHostName , SocketAddr & Addr );
153 
160  static inline sal_Int32 SAL_CALL getServicePort(
161  const ::rtl::OUString& strServiceName,
162  const ::rtl::OUString & strProtocolName= ::rtl::OUString("tcp") );
163  };
164 
165 
166  class Socket
167  {
168  protected:
170  protected:
176  inline Socket(oslSocketType Type,
179  public:
180  inline Socket( );
181 
182  inline Socket( const Socket & socket );
183 
184  inline Socket( oslSocket socketHandle );
185 
191  inline Socket( oslSocket socketHandle, __sal_NoAcquire noacquire );
192 
195  inline ~Socket();
196 
200  inline Socket& SAL_CALL operator= ( oslSocket socketHandle);
201 
205  inline Socket& SAL_CALL operator= (const Socket& sock);
206 
211  inline bool SAL_CALL operator==( const Socket& rSocket ) const ;
212 
217  inline bool SAL_CALL operator==( const oslSocket socketHandle ) const;
218 
224  inline void SAL_CALL shutdown( oslSocketDirection Direction = osl_Socket_DirReadWrite );
225 
231  inline void SAL_CALL close();
232 
237  inline void SAL_CALL getLocalAddr( SocketAddr &Addr ) const;
238 
242  inline sal_Int32 SAL_CALL getLocalPort() const;
243 
247  inline ::rtl::OUString SAL_CALL getLocalHost() const;
248 
252  inline void SAL_CALL getPeerAddr( SocketAddr & Addr) const;
253 
257  inline sal_Int32 SAL_CALL getPeerPort() const;
258 
262  inline ::rtl::OUString SAL_CALL getPeerHost() const;
263 
268  inline bool SAL_CALL bind(const SocketAddr& LocalInterface);
269 
280  inline bool SAL_CALL isRecvReady(const TimeValue *pTimeout = NULL) const;
281 
292  inline bool SAL_CALL isSendReady(const TimeValue *pTimeout = NULL) const;
293 
294 
307  inline bool SAL_CALL isExceptionPending(const TimeValue *pTimeout = NULL) const;
308 
309 
321  inline oslSocketType SAL_CALL getType() const;
322 
404  inline sal_Int32 SAL_CALL getOption(
405  oslSocketOption Option,
406  void* pBuffer,
407  sal_uInt32 BufferLen,
409 
451  inline bool SAL_CALL setOption( oslSocketOption Option,
452  void* pBuffer,
453  sal_uInt32 BufferLen,
455 
459  inline bool setOption( oslSocketOption option, sal_Int32 nValue );
460 
464  inline sal_Int32 getOption( oslSocketOption option ) const;
465 
472  inline bool SAL_CALL enableNonBlockingMode( bool bNonBlockingMode);
473 
477  inline bool SAL_CALL isNonBlockingMode() const;
478 
479 
482  inline void SAL_CALL clearError() const;
483 
491  inline oslSocketError getError() const;
492 
495  inline ::rtl::OUString getErrorAsString( ) const;
496 
499  inline oslSocket getHandle() const;
500  };
501 
502 
503  class StreamSocket : public Socket
504  {
505  public:
517 
518  inline StreamSocket( const StreamSocket & );
519 
520  inline StreamSocket( oslSocket Socket , __sal_NoAcquire noacquire );
521 
522  inline StreamSocket( oslSocket Socket );
523 
533  inline sal_Int32 SAL_CALL read(void* pBuffer, sal_uInt32 n);
534 
542  inline sal_Int32 SAL_CALL write(const void* pBuffer, sal_uInt32 n);
543 
544 
561  inline sal_Int32 SAL_CALL recv(void* pBuffer,
562  sal_uInt32 BytesToRead,
564 
581  sal_Int32 SAL_CALL send(const void* pBuffer,
582  sal_uInt32 BytesToSend,
584  };
585 
587  {
588  public:
600 
601 
611  oslSocketResult SAL_CALL connect(const SocketAddr& TargetHost, const TimeValue* pTimeout = NULL);
612  };
613 
616  class AcceptorSocket : public Socket
617  {
618  public:
622 
630  inline bool SAL_CALL listen(sal_Int32 MaxPendingConnections= -1);
631 
639  inline oslSocketResult SAL_CALL acceptConnection( StreamSocket& Connection);
640 
650  inline oslSocketResult SAL_CALL acceptConnection( StreamSocket& Connection, SocketAddr & PeerAddr);
651  };
652 
653 
656  class DatagramSocket : public Socket
657  {
658  public:
659 
668 
688  inline sal_Int32 SAL_CALL recvFrom(void* pBuffer,
689  sal_uInt32 BufferSize,
690  SocketAddr* pSenderAddr= NULL,
692 
715  inline sal_Int32 SAL_CALL sendTo( const SocketAddr& ReceiverAddr,
716  const void* pBuffer,
717  sal_uInt32 BufferSize,
719  };
720 
721 }
722 
723 #endif
724 
725 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
oslSocketOptionLevel
Represents the different socket-option levels.
Definition: socket.h:109
static inline::rtl::OUString getLocalHostname(oslSocketResult *pResult=NULL)
Get the hostname for the local interface.
Definition: socket.hxx:164
bool operator==(oslSocketAddr Addr) const
Returns true if the underlying handle is identical to the Addr handle.
Definition: socket.hxx:147
struct oslSocketImpl * oslSocket
Definition: socket.h:402
SocketAddr & assign(oslSocketAddr Addr, __osl_socket_NoCopy nocopy)
Assigns the socket addr without copyconstructing it.
Definition: socket.hxx:138
bool setAddr(const ::rtl::ByteSequence &address)
Sets the address of the underlying socket address struct in network byte order.
Definition: socket.hxx:106
SocketAddr()
Creates socket address of unknown type.
Definition: socket.hxx:27
oslSocketOption
Represents socket-options.
Definition: socket.h:83
inline::rtl::OUString getHostname(oslSocketResult *pResult=NULL) const
Converts the address to a (human readable) domain-name.
Definition: socket.hxx:78
oslSocketDirection
Used by shutdown to denote which end of the socket to "close".
Definition: socket.h:133
~SocketAddr()
destroys underlying oslSocketAddress
Definition: socket.hxx:71
static void resolveHostname(const ::rtl::OUString &strHostName, SocketAddr &Addr)
Tries to find an address for a host.
Definition: socket.hxx:174
bool setHostname(const ::rtl::OUString &sDottedIpOrHostname)
Sets the ipaddress or hostname of the SocketAddress.
Definition: socket.hxx:99
oslSocketAddr getHandle() const
Returns the underlying SocketAddr handle without copyconstructing it.
Definition: socket.hxx:152
oslSocketType
Represents the type of a socket.
Definition: socket.h:69
oslSocketError
Describes the various error socket error conditions, which may occur.
Definition: socket.h:143
Definition: socket.h:110
oslSocketMsgFlag
Represents flags to be used with send/recv-calls.
Definition: socket.h:120
Definition: socket.h:57
struct oslSocketAddrImpl * oslSocketAddr
Opaque datatype SocketAddr.
Definition: socket.h:40
oslSocketResult
Common return codes of socket related functions.
Definition: socket.h:182
Definition: socket.h:121
__sal_NoAcquire
Definition: types.h:384
Allows to accept socket connections.
Definition: socket_decl.hxx:616
Definition: socket_decl.hxx:586
oslProtocol
represent a specific protocol within a address-family
Definition: socket.h:56
oslSocketAddr m_handle
Definition: socket_decl.hxx:42
__osl_socket_NoCopy
Definition: socket_decl.hxx:33
sal_Int32 getPort() const
Returns the port number of the address.
Definition: socket.hxx:88
This String class provides base functionality for C++ like Unicode character array handling...
Definition: ustring.hxx:106
Definition: time.h:70
The class should be understood as a reference to a socket address handle ( struct sockaddr )...
Definition: socket_decl.hxx:39
bool setPort(sal_Int32 nPort)
Sets the port number of the address.
Definition: socket.hxx:94
Definition: socket.h:136
static sal_Int32 getServicePort(const ::rtl::OUString &strServiceName, const ::rtl::OUString &strProtocolName=::rtl::OUString("tcp"))
Tries to find the port associated with the given service/protocol- pair (e.g.
Definition: socket.hxx:181
oslSocket m_handle
Definition: socket_decl.hxx:169
Definition: socket.h:47
Definition: socket_decl.hxx:503
inline::rtl::ByteSequence getAddr(oslSocketResult *pResult=NULL) const
Returns the address of the underlying socket in network byte order.
Definition: socket.hxx:112
Definition: conditn.hxx:32
SocketAddr & operator=(oslSocketAddr Addr)
assign the handle to this reference.
Definition: socket.hxx:122
Definition: socket.h:70
oslAddrFamily
Represents the address-family of a socket.
Definition: socket.h:46
Definition: socket.h:71
Definition: socket_decl.hxx:166
bool is() const
checks, if the SocketAddr was created successful.
Definition: socket.hxx:158
A connectionless socket to send and receive datagrams.
Definition: socket_decl.hxx:656
Definition: socket_decl.hxx:33