LibreOffice: osl/socket_decl.hxx Source File

LibreOffice LibreOffice 5.1 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 {
33 enum __osl_socket_NoCopy { SAL_NO_COPY };
34
39 class SocketAddr
40 {
41 protected:
42 oslSocketAddr m_handle;
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:
169 oslSocket m_handle;
170 protected:
176 inline Socket(oslSocketType Type,
177 oslAddrFamily Family = osl_Socket_FamilyInet,
178 oslProtocol Protocol = osl_Socket_ProtocolIp);
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,
408 oslSocketOptionLevel Level= osl_Socket_LevelSocket) const;
409
451 inline bool SAL_CALL setOption( oslSocketOption Option,
452 void* pBuffer,
453 sal_uInt32 BufferLen,
454 oslSocketOptionLevel Level= osl_Socket_LevelSocket ) const;
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:
514 inline StreamSocket(oslAddrFamily Family = osl_Socket_FamilyInet,
515 oslProtocol Protocol = osl_Socket_ProtocolIp,
516 oslSocketType Type = osl_Socket_TypeStream);
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,
563 oslSocketMsgFlag flags= osl_Socket_MsgNormal);
564
581 sal_Int32 SAL_CALL send(const void* pBuffer,
582 sal_uInt32 BytesToSend,
583 oslSocketMsgFlag= osl_Socket_MsgNormal);
584 };
585
586 class ConnectorSocket : public StreamSocket
587 {
588 public:
597 ConnectorSocket(oslAddrFamily Family = osl_Socket_FamilyInet,
598 oslProtocol Protocol = osl_Socket_ProtocolIp,
599 oslSocketType Type = osl_Socket_TypeStream);
600
601
611 oslSocketResult SAL_CALL connect(const SocketAddr& TargetHost, const TimeValue* pTimeout = NULL);
612 };
613
616 class AcceptorSocket : public Socket
617 {
618 public:
619 inline AcceptorSocket(oslAddrFamily Family = osl_Socket_FamilyInet,
620 oslProtocol Protocol = osl_Socket_ProtocolIp,
621 oslSocketType Type = osl_Socket_TypeStream);
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
654
657 class DatagramSocket : public Socket
658 {
659 public:
660
666 inline DatagramSocket(oslAddrFamily Family= osl_Socket_FamilyInet,
667 oslProtocol Protocol= osl_Socket_ProtocolIp,
668 oslSocketType Type= osl_Socket_TypeDgram);
669
689 inline sal_Int32 SAL_CALL recvFrom(void* pBuffer,
690 sal_uInt32 BufferSize,
691 SocketAddr* pSenderAddr= NULL,
692 oslSocketMsgFlag Flag= osl_Socket_MsgNormal);
693
716 inline sal_Int32 SAL_CALL sendTo( const SocketAddr& ReceiverAddr,
717 const void* pBuffer,
718 sal_uInt32 BufferSize,
719 oslSocketMsgFlag Flag= osl_Socket_MsgNormal);
720 };
721
722 }
723
724 #endif
725
726 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
osl::SocketAddr::~SocketAddr
~SocketAddr()
destroys underlying oslSocketAddress
Definition: socket.hxx:71
osl::SocketAddr::assign
SocketAddr & assign(oslSocketAddr Addr, __osl_socket_NoCopy nocopy)
Assigns the socket addr without copyconstructing it.
Definition: socket.hxx:138
osl::SocketAddr::setPort
bool setPort(sal_Int32 nPort)
Sets the port number of the address.
Definition: socket.hxx:94
osl_Socket_FamilyInet
Definition: socket.h:47
osl::SocketAddr::getHandle
oslSocketAddr getHandle() const
Returns the underlying SocketAddr handle without copyconstructing it.
Definition: socket.hxx:152
osl::SocketAddr::SocketAddr
SocketAddr()
Creates socket address of unknown type.
Definition: socket.hxx:27
TimeValue
Definition: time.h:70
osl::SocketAddr::operator==
bool operator==(oslSocketAddr Addr) const
Returns true if the underlying handle is identical to the Addr handle.
Definition: socket.hxx:147
oslSocketMsgFlag
oslSocketMsgFlag
Represents flags to be used with send/recv-calls.
Definition: socket.h:120
osl::SocketAddr::setAddr
bool setAddr(const ::rtl::ByteSequence &address)
Sets the address of the underlying socket address struct in network byte order.
Definition: socket.hxx:106
oslSocketError
oslSocketError
Describes the various error socket error conditions, which may occur.
Definition: socket.h:143
osl::SocketAddr::getServicePort
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
osl::SocketAddr::getLocalHostname
static inline ::rtl::OUString getLocalHostname(oslSocketResult *pResult=NULL)
Get the hostname for the local interface.
Definition: socket.hxx:164
osl_Socket_MsgNormal
Definition: socket.h:121
osl::SocketAddr::getHostname
inline ::rtl::OUString getHostname(oslSocketResult *pResult=NULL) const
Converts the address to a (human readable) domain-name.
Definition: socket.hxx:78
oslSocket
struct oslSocketImpl * oslSocket
Definition: socket.h:402
osl::SocketAddr::getAddr
inline ::rtl::ByteSequence getAddr(oslSocketResult *pResult=NULL) const
Returns the address of the underlying socket in network byte order.
Definition: socket.hxx:112
oslSocketAddr
struct oslSocketAddrImpl * oslSocketAddr
Opaque datatype SocketAddr.
Definition: socket.h:40
osl::SocketAddr::m_handle
oslSocketAddr m_handle
Definition: socket_decl.hxx:42
osl_Socket_TypeDgram
Definition: socket.h:71
ustring.hxx
oslSocketDirection
oslSocketDirection
Used by shutdown to denote which end of the socket to "close".
Definition: socket.h:133
osl::__osl_socket_NoCopy
__osl_socket_NoCopy
Definition: socket_decl.hxx:33
oslProtocol
oslProtocol
represent a specific protocol within a address-family
Definition: socket.h:56
osl::SocketAddr::getPort
sal_Int32 getPort() const
Returns the port number of the address.
Definition: socket.hxx:88
osl_Socket_TypeStream
Definition: socket.h:70
__sal_NoAcquire
__sal_NoAcquire
Definition: types.h:382
oslSocketOption
oslSocketOption
Represents socket-options.
Definition: socket.h:83
osl::ConnectorSocket
Definition: socket_decl.hxx:586
osl::SocketAddr::is
bool is() const
checks, if the SocketAddr was created successful.
Definition: socket.hxx:158
osl_Socket_ProtocolIp
Definition: socket.h:57
osl
Definition: conditn.hxx:32
osl::SocketAddr::operator=
SocketAddr & operator=(oslSocketAddr Addr)
assign the handle to this reference.
Definition: socket.hxx:122
oslAddrFamily
oslAddrFamily
Represents the address-family of a socket.
Definition: socket.h:46
osl_Socket_DirReadWrite
Definition: socket.h:136
osl_Socket_LevelSocket
Definition: socket.h:110
config.h
osl::SAL_NO_COPY
Definition: socket_decl.hxx:33
osl::Socket::m_handle
oslSocket m_handle
Definition: socket_decl.hxx:169
osl::SocketAddr
The class should be understood as a reference to a socket address handle ( struct sockaddr )...
Definition: socket_decl.hxx:39
rtl::OUString
This String class provides base functionality for C++ like Unicode character array handling...
Definition: ustring.hxx:106
oslSocketOptionLevel
oslSocketOptionLevel
Represents the different socket-option levels.
Definition: socket.h:109
oslSocketResult
oslSocketResult
Common return codes of socket related functions.
Definition: socket.h:182
osl::DatagramSocket
A connectionless socket to send and receive datagrams.
Definition: socket_decl.hxx:657
byteseq.hxx
osl::StreamSocket
Definition: socket_decl.hxx:503
osl::SocketAddr::setHostname
bool setHostname(const ::rtl::OUString &sDottedIpOrHostname)
Sets the ipaddress or hostname of the SocketAddress.
Definition: socket.hxx:99
osl::SocketAddr::resolveHostname
static void resolveHostname(const ::rtl::OUString &strHostName, SocketAddr &Addr)
Tries to find an address for a host.
Definition: socket.hxx:174
osl::AcceptorSocket
Allows to accept socket connections.
Definition: socket_decl.hxx:616
osl::Socket
Definition: socket_decl.hxx:166
oslSocketType
oslSocketType
Represents the type of a socket.
Definition: socket.h:69
socket.h