LibreOffice
LibreOffice 7.1 SDK C/C++ API Reference
socket.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 #ifndef INCLUDED_OSL_SOCKET_HXX
20 #define INCLUDED_OSL_SOCKET_HXX
21 
22 #include "osl/socket_decl.hxx"
23 
24 namespace osl
25 {
26 
29  {}
30 
31 
32  inline SocketAddr::SocketAddr(const SocketAddr& Addr)
33  : m_handle( osl_copySocketAddr( Addr.m_handle ) )
34  {
35  }
36 
37 #if defined LIBO_INTERNAL_ONLY
38  SocketAddr::SocketAddr(SocketAddr && other) noexcept : m_handle(other.m_handle) {
39  other.m_handle = nullptr;
40  }
41 #endif
42 
44  : m_handle( osl_copySocketAddr( Addr ) )
45  {
46  }
47 
48 
50  : m_handle( Addr )
51  {
52  }
53 
54 
55  inline SocketAddr::SocketAddr( const ::rtl::OUString& strAddrOrHostName, sal_Int32 nPort)
56  : m_handle( osl_createInetSocketAddr( strAddrOrHostName.pData, nPort ) )
57  {
58  if(! m_handle )
59  {
60  m_handle = osl_resolveHostname(strAddrOrHostName.pData);
61 
62  // host found?
63  if(m_handle)
64  {
66  }
67  else
68  {
70  m_handle = NULL;
71  }
72  }
73  }
74 
75 
77  {
78  if( m_handle )
80  }
81 
82 
83  inline ::rtl::OUString SocketAddr::getHostname( oslSocketResult *pResult ) const
84  {
85  ::rtl::OUString hostname;
86  oslSocketResult result = osl_getHostnameOfSocketAddr( m_handle, &(hostname.pData) );
87  if( pResult )
88  *pResult = result;
89  return hostname;
90  }
91 
92 
93  inline sal_Int32 SAL_CALL SocketAddr::getPort() const
94  {
96  }
97 
98 
99  inline bool SAL_CALL SocketAddr::setPort( sal_Int32 nPort )
100  {
101  return osl_setInetPortOfSocketAddr(m_handle, nPort );
102  }
103 
104  inline bool SAL_CALL SocketAddr::setHostname( const ::rtl::OUString &sDottedIpOrHostname )
105  {
106  *this = SocketAddr( sDottedIpOrHostname , getPort() );
107  return is();
108  }
109 
110 
111  inline bool SAL_CALL SocketAddr::setAddr( const ::rtl::ByteSequence & address )
112  {
113  return osl_setAddrOfSocketAddr( m_handle, address.getHandle() )
114  == osl_Socket_Ok;
115  }
116 
117  inline ::rtl::ByteSequence SAL_CALL SocketAddr::getAddr( oslSocketResult *pResult ) const
118  {
119  ::rtl::ByteSequence sequence;
120  oslSocketResult result = osl_getAddrOfSocketAddr( m_handle, reinterpret_cast<sal_Sequence **>(&sequence) );
121  if( pResult )
122  *pResult = result;
123  return sequence;
124  }
125 
126 
128  {
129  oslSocketAddr pNewAddr = osl_copySocketAddr( Addr );
130  if( m_handle )
132  m_handle = pNewAddr;
133  return *this;
134  }
135 
136 
137  inline SocketAddr & SAL_CALL SocketAddr::operator= (const SocketAddr& Addr)
138  {
139  *this = Addr.getHandle();
140  return *this;
141  }
142 
143 #if defined LIBO_INTERNAL_ONLY
144  SocketAddr & SocketAddr::operator =(SocketAddr && other) noexcept {
145  if (m_handle != nullptr) {
146  osl_destroySocketAddr(m_handle);
147  }
148  m_handle = other.m_handle;
149  other.m_handle = nullptr;
150  return *this;
151  }
152 #endif
153 
155  {
156  if( m_handle )
158  m_handle = Addr;
159  return *this;
160  }
161 
162 
163  inline bool SAL_CALL SocketAddr::operator== (oslSocketAddr Addr) const
164  {
165  return osl_isEqualSocketAddr( m_handle, Addr );
166  }
167 
169  {
170  return m_handle;
171  }
172 
173 
174  inline bool SocketAddr::is() const
175  {
176  return m_handle != NULL;
177  }
178 
179  inline ::rtl::OUString SAL_CALL SocketAddr::getLocalHostname( oslSocketResult *pResult )
180  {
181  ::rtl::OUString hostname;
182  oslSocketResult result = osl_getLocalHostname( &(hostname.pData) );
183  if(pResult )
184  *pResult = result;
185  return hostname;
186  }
187 
188  inline void SAL_CALL SocketAddr::resolveHostname(
189  const ::rtl::OUString & strHostName, SocketAddr &Addr)
190  {
191  Addr = SocketAddr( osl_resolveHostname( strHostName.pData ) , SAL_NO_COPY );
192  }
193 
194  inline sal_Int32 SAL_CALL SocketAddr::getServicePort(
195  const ::rtl::OUString& strServiceName,
196  const ::rtl::OUString & strProtocolName )
197  {
198  return osl_getServicePort( strServiceName.pData, strProtocolName.pData );
199  }
200 
201 
203  oslAddrFamily Family,
204  oslProtocol Protocol)
205  : m_handle( osl_createSocket(Family, Type, Protocol) )
206  {}
207 
208 
209  inline Socket::Socket( oslSocket socketHandle, __sal_NoAcquire )
210  : m_handle( socketHandle )
211  {}
212 
213 
214  inline Socket::Socket( oslSocket socketHandle )
215  : m_handle( socketHandle )
216  {
218  }
219 
220 
221  inline Socket::Socket( const Socket & socket )
222  : m_handle( socket.getHandle() )
223  {
225  }
226 
227 
229  {
231  }
232 
233 
234  inline Socket& Socket::operator= ( oslSocket socketHandle)
235  {
236  osl_acquireSocket( socketHandle );
238  m_handle = socketHandle;
239  return *this;
240  }
241 
242 
243  inline Socket& Socket::operator= (const Socket& sock)
244  {
245  *this = sock.getHandle();
246  return *this;
247  }
248 
249 
250  inline bool Socket::operator==( const Socket& rSocket ) const
251  {
252  return m_handle == rSocket.getHandle();
253  }
254 
255 
256  inline bool Socket::operator==( const oslSocket socketHandle ) const
257  {
258  return m_handle == socketHandle;
259  }
260 
261 
262  inline void Socket::shutdown( oslSocketDirection Direction )
263  {
264  osl_shutdownSocket( m_handle , Direction );
265  }
266 
267 
268  inline void Socket::close()
269  {
271  }
272 
273 
274  inline void Socket::getLocalAddr( SocketAddr & addr) const
275  {
277  }
278 
279 
280  inline sal_Int32 Socket::getLocalPort() const
281  {
282  SocketAddr addr( NULL );
283  getLocalAddr( addr );
284  return addr.getPort();
285  }
286 
287 
288  inline ::rtl::OUString Socket::getLocalHost() const
289  {
290  SocketAddr addr( NULL );
291  getLocalAddr( addr );
292  return addr.getHostname();
293  }
294 
295 
296  inline void Socket::getPeerAddr( SocketAddr &addr ) const
297  {
299  }
300 
301 
302  inline sal_Int32 Socket::getPeerPort() const
303  {
304  SocketAddr addr( NULL );
305  getPeerAddr( addr );
306  return addr.getPort();
307  }
308 
309 
310  inline ::rtl::OUString Socket::getPeerHost() const
311  {
312  SocketAddr addr( NULL );
313  getPeerAddr( addr );
314  return addr.getHostname();
315  }
316 
317 
318  inline bool Socket::bind(const SocketAddr& LocalInterface)
319  {
320  return osl_bindAddrToSocket( m_handle , LocalInterface.getHandle() );
321  }
322 
323 
324  inline bool Socket::isRecvReady(const TimeValue *pTimeout ) const
325  {
326  return osl_isReceiveReady( m_handle , pTimeout );
327  }
328 
329 
330  inline bool Socket::isSendReady(const TimeValue *pTimeout ) const
331  {
332  return osl_isSendReady( m_handle, pTimeout );
333  }
334 
335 
336  inline bool Socket::isExceptionPending(const TimeValue *pTimeout ) const
337  {
338  return osl_isExceptionPending( m_handle, pTimeout );
339  }
340 
341 
343  {
344  return osl_getSocketType( m_handle );
345  }
346 
347 
348  inline sal_Int32 Socket::getOption(
349  oslSocketOption Option,
350  void* pBuffer,
351  sal_uInt32 BufferLen,
352  oslSocketOptionLevel Level) const
353  {
354  return osl_getSocketOption( m_handle, Level, Option, pBuffer , BufferLen );
355  }
356 
357 
358  inline bool Socket::setOption( oslSocketOption Option,
359  void* pBuffer,
360  sal_uInt32 BufferLen,
361  oslSocketOptionLevel Level ) const
362  {
363  return osl_setSocketOption( m_handle, Level, Option , pBuffer, BufferLen );
364  }
365 
366 
367  inline bool Socket::setOption( oslSocketOption option, sal_Int32 nValue )
368  {
369  return setOption( option, &nValue, sizeof( nValue ) );
370  }
371 
372 
373  inline sal_Int32 Socket::getOption( oslSocketOption option ) const
374  {
375  sal_Int32 n;
376  getOption( option, &n, sizeof( n ) );
377  return n;
378  }
379 
380 
381  inline bool Socket::enableNonBlockingMode( bool bNonBlockingMode)
382  {
383  return osl_enableNonBlockingMode( m_handle , bNonBlockingMode );
384  }
385 
386 
387  inline bool Socket::isNonBlockingMode() const
388  {
390  }
391 
392 
393  inline void SAL_CALL Socket::clearError() const
394  {
395  sal_Int32 err = 0;
396  getOption(osl_Socket_OptionError, &err, sizeof(err));
397  }
398 
399 
401  {
403  }
404 
405 
406  inline ::rtl::OUString Socket::getErrorAsString( ) const
407  {
408  ::rtl::OUString error;
409  osl_getLastSocketErrorDescription( m_handle, &(error.pData) );
410  return error;
411  }
412 
413 
415  {
416  return m_handle;
417  }
418 
419 
421  oslProtocol Protocol,
422  oslSocketType Type )
423  : Socket( Type, Family, Protocol )
424  {}
425 
426 
427  inline StreamSocket::StreamSocket( oslSocket socketHandle, __sal_NoAcquire noacquire )
428  : Socket( socketHandle, noacquire )
429  {}
430 
431 
432  inline StreamSocket::StreamSocket( oslSocket socketHandle )
433  : Socket( socketHandle )
434  {}
435 
436 
437  inline sal_Int32 StreamSocket::read(void* pBuffer, sal_uInt32 n)
438  {
439  return osl_readSocket( m_handle, pBuffer, n );
440  }
441 
442 
443  inline sal_Int32 StreamSocket::write(const void* pBuffer, sal_uInt32 n)
444  {
445  return osl_writeSocket( m_handle, pBuffer, n );
446  }
447 
448 
449  inline sal_Int32 StreamSocket::recv(void* pBuffer,
450  sal_uInt32 BytesToRead,
451  oslSocketMsgFlag Flag)
452  {
453  return osl_receiveSocket( m_handle, pBuffer,BytesToRead, Flag );
454  }
455 
456 
457  inline sal_Int32 StreamSocket::send(const void* pBuffer,
458  sal_uInt32 BytesToSend,
459  oslSocketMsgFlag Flag)
460  {
461  return osl_sendSocket( m_handle, pBuffer, BytesToSend, Flag );
462  }
463 
464 
466  oslProtocol Protocol,
467  oslSocketType Type)
468  : StreamSocket( Family, Protocol ,Type )
469  {}
470 
471 
473  const TimeValue* pTimeout )
474  {
475  return osl_connectSocketTo( m_handle , TargetHost.getHandle(), pTimeout );
476  }
477 
478 
480  oslProtocol Protocol ,
481  oslSocketType Type )
482  : Socket( Type, Family, Protocol )
483  {}
484 
485 
486  inline bool AcceptorSocket::listen(sal_Int32 MaxPendingConnections)
487  {
488  return osl_listenOnSocket( m_handle, MaxPendingConnections );
489  }
490 
491 
493  {
496  if( o )
497  {
498  Connection = StreamSocket( o , SAL_NO_ACQUIRE );
499  }
500  else
501  {
502  Connection = StreamSocket();
503  status = osl_Socket_Error;
504  }
505  return status;
506  }
507 
508 
510  StreamSocket& Connection, SocketAddr & PeerAddr)
511  {
512  // TODO change in/OUT parameter
514  m_handle, reinterpret_cast<oslSocketAddr *>(&PeerAddr));
516  if( o )
517  {
518  Connection = StreamSocket( o , SAL_NO_ACQUIRE );
519  }
520  else
521  {
522  Connection = StreamSocket();
523  status = osl_Socket_Error;
524  }
525  return status;
526  }
527 
528 
530  oslProtocol Protocol,
531  oslSocketType Type)
532  : Socket( Type, Family, Protocol )
533  {}
534 
535 
536  inline sal_Int32 DatagramSocket::recvFrom(void* pBuffer,
537  sal_uInt32 BufferSize,
538  SocketAddr* pSenderAddr,
539  oslSocketMsgFlag Flag )
540  {
541  sal_Int32 nByteRead;
542  if( pSenderAddr )
543  {
544  // TODO : correct the out-parameter pSenderAddr outparameter
545  nByteRead = osl_receiveFromSocket( m_handle, pSenderAddr->getHandle() , pBuffer,
546  BufferSize, Flag);
547  }
548  else
549  {
550  nByteRead = osl_receiveFromSocket( m_handle, NULL , pBuffer , BufferSize , Flag );
551  }
552  return nByteRead;
553  }
554 
555 
556  inline sal_Int32 DatagramSocket::sendTo( const SocketAddr& ReceiverAddr,
557  const void* pBuffer,
558  sal_uInt32 BufferSize,
559  oslSocketMsgFlag Flag )
560  {
561  return osl_sendToSocket( m_handle, ReceiverAddr.getHandle(), pBuffer, BufferSize, Flag );
562  }
563 }
564 #endif
565 
566 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
__sal_NoAcquire
Definition: types.h:349
@ SAL_NO_ACQUIRE
definition of a no acquire enum for ctors
Definition: types.h:352
oslSocketOption
Represents socket-options.
Definition: socket.h:85
@ osl_Socket_OptionError
Definition: socket.h:110
SAL_DLLPUBLIC sal_Bool osl_setInetPortOfSocketAddr(oslSocketAddr Addr, sal_Int32 Port)
Sets the Port of Addr.
SAL_DLLPUBLIC sal_Int32 osl_getSocketOption(oslSocket Socket, oslSocketOptionLevel Level, oslSocketOption Option, void *pBuffer, sal_uInt32 BufferLen)
Retrieves attributes associated with the socket.
SAL_DLLPUBLIC sal_Int32 osl_getInetPortOfSocketAddr(oslSocketAddr Addr)
Retrieves the internet port-number of Addr.
SAL_DLLPUBLIC oslSocketResult osl_getAddrOfSocketAddr(oslSocketAddr Addr, sal_Sequence **ppByteSeq)
Returns the addr field in the struct sockaddr.
SAL_DLLPUBLIC sal_Bool osl_listenOnSocket(oslSocket Socket, sal_Int32 MaxPendingConnections)
Prepares the socket to act as an acceptor of incoming connections.
oslSocketResult
Common return codes of socket related functions.
Definition: socket.h:193
@ osl_Socket_Ok
Definition: socket.h:194
@ osl_Socket_Error
Definition: socket.h:195
struct oslSocketAddrImpl * oslSocketAddr
Opaque datatype SocketAddr.
Definition: socket.h:40
SAL_DLLPUBLIC sal_Bool osl_bindAddrToSocket(oslSocket Socket, oslSocketAddr Addr)
Binds the given address to the socket.
SAL_DLLPUBLIC oslSocket osl_acceptConnectionOnSocket(oslSocket Socket, oslSocketAddr *pAddr)
Waits for an ingoing connection on the socket.
SAL_DLLPUBLIC void osl_closeSocket(oslSocket Socket)
Closes the socket terminating any ongoing dataflow.
SAL_DLLPUBLIC void osl_acquireSocket(oslSocket Socket)
increases the refcount of the socket handle by one
SAL_DLLPUBLIC sal_Bool osl_isSendReady(oslSocket Socket, const TimeValue *pTimeout)
Checks if send operations will block.
SAL_DLLPUBLIC oslSocketResult osl_setAddrOfSocketAddr(oslSocketAddr Addr, sal_Sequence *pByteSeq)
Sets the addr field in the struct sockaddr with pByteSeq.
SAL_DLLPUBLIC void osl_releaseSocket(oslSocket Socket)
decreases the refcount of the socket handle by one.
oslSocketType
Represents the type of a socket.
Definition: socket.h:67
SAL_DLLPUBLIC oslSocketError osl_getLastSocketError(oslSocket Socket)
Returns a constant describing the last error for the socket system.
SAL_DLLPUBLIC sal_Bool osl_isNonBlockingMode(oslSocket Socket)
Query state of non-blocking-mode of the socket.
SAL_DLLPUBLIC void osl_destroySocketAddr(oslSocketAddr Addr)
Frees all resources allocated by Addr.
SAL_DLLPUBLIC oslSocketAddr osl_getLocalAddrOfSocket(oslSocket Socket)
Retrieves the Address of the local end of the socket.
SAL_DLLPUBLIC sal_Bool osl_isReceiveReady(oslSocket Socket, const TimeValue *pTimeout)
Checks if read operations will block.
SAL_DLLPUBLIC oslSocketType osl_getSocketType(oslSocket Socket)
Queries the socket for its type.
SAL_DLLPUBLIC sal_Bool osl_setSocketOption(oslSocket Socket, oslSocketOptionLevel Level, oslSocketOption Option, void *pBuffer, sal_uInt32 BufferLen)
Sets the sockets attributes.
struct oslSocketImpl * oslSocket
Definition: socket.h:212
SAL_DLLPUBLIC sal_Int32 osl_receiveSocket(oslSocket Socket, void *pBuffer, sal_uInt32 BytesToRead, oslSocketMsgFlag Flag)
Tries to receive BytesToRead data from the connected socket, if no error occurs.
SAL_DLLPUBLIC oslSocket osl_createSocket(oslAddrFamily Family, oslSocketType Type, oslProtocol Protocol)
Create a socket of the specified Family and Type.
SAL_DLLPUBLIC sal_Int32 osl_writeSocket(oslSocket Socket, const void *pBuffer, sal_Int32 nSize)
Writes n bytes from pBuffer to the stream.
oslSocketOptionLevel
Represents the different socket-option levels.
Definition: socket.h:121
SAL_DLLPUBLIC oslSocketAddr osl_createInetSocketAddr(rtl_uString *strDottedAddr, sal_Int32 Port)
Create an internet-address, consisting of host address and port.
SAL_DLLPUBLIC oslSocketAddr osl_createEmptySocketAddr(oslAddrFamily Family)
Creates a socket-address for the given family.
SAL_DLLPUBLIC oslSocketAddr osl_getPeerAddrOfSocket(oslSocket Socket)
Retrieves the Address of the remote end of the socket.
oslSocketDirection
Used by shutdown to denote which end of the socket to "close".
Definition: socket.h:144
SAL_DLLPUBLIC sal_Int32 osl_readSocket(oslSocket Socket, void *pBuffer, sal_Int32 nSize)
Retrieves n bytes from the stream and copies them into pBuffer.
SAL_DLLPUBLIC sal_Int32 osl_sendToSocket(oslSocket Socket, oslSocketAddr ReceiverAddr, const void *pBuffer, sal_uInt32 BytesToSend, oslSocketMsgFlag Flag)
Tries to send one datagram with BytesToSend data to the given ReceiverAddr via the (implicitly unconn...
SAL_DLLPUBLIC sal_Int32 osl_sendSocket(oslSocket Socket, const void *pBuffer, sal_uInt32 BytesToSend, oslSocketMsgFlag Flag)
Tries to send BytesToSend data from the connected socket, if no error occurs.
SAL_DLLPUBLIC sal_Bool osl_enableNonBlockingMode(oslSocket Socket, sal_Bool On)
Enables/disables non-blocking-mode of the socket.
oslProtocol
represent a specific protocol within an address-family
Definition: socket.h:55
oslSocketError
Describes the various error socket error conditions, which may occur.
Definition: socket.h:154
SAL_DLLPUBLIC sal_Int32 osl_receiveFromSocket(oslSocket Socket, oslSocketAddr SenderAddr, void *pBuffer, sal_uInt32 BufferSize, oslSocketMsgFlag Flag)
Tries to receives BufferSize data from the (usually unconnected) (datagram-)socket,...
oslAddrFamily
Represents the address-family of a socket.
Definition: socket.h:45
@ osl_Socket_FamilyInet
Definition: socket.h:46
SAL_DLLPUBLIC oslSocketResult osl_connectSocketTo(oslSocket Socket, oslSocketAddr Addr, const TimeValue *pTimeout)
Connects the socket to the given address.
SAL_DLLPUBLIC oslSocketResult osl_getLocalHostname(rtl_uString **strLocalHostname)
Retrieve this machines hostname.
SAL_DLLPUBLIC sal_Int32 osl_getServicePort(rtl_uString *strServicename, rtl_uString *strProtocol)
Looks up the port-number designated to the specified service/protocol-pair.
SAL_DLLPUBLIC oslSocketAddr osl_resolveHostname(rtl_uString *strHostname)
Uses the systems name-service interface to find an address for strHostname.
SAL_DLLPUBLIC oslSocketResult osl_getHostnameOfSocketAddr(oslSocketAddr Addr, rtl_uString **strHostname)
Returns the hostname represented by Addr.
oslSocketMsgFlag
Represents flags to be used with send/recv-calls.
Definition: socket.h:131
SAL_DLLPUBLIC oslSocketAddr osl_copySocketAddr(oslSocketAddr Addr)
Creates a new SocketAddress and fills it from Addr.
SAL_DLLPUBLIC sal_Bool osl_isExceptionPending(oslSocket Socket, const TimeValue *pTimeout)
Checks if a request for out-of-band data will block.
SAL_DLLPUBLIC void osl_getLastSocketErrorDescription(oslSocket Socket, rtl_uString **strError)
returns a string which describes the last socket error.
SAL_DLLPUBLIC sal_Bool osl_isEqualSocketAddr(oslSocketAddr Addr1, oslSocketAddr Addr2)
Compares the values of two SocketAddresses.
SAL_DLLPUBLIC sal_Bool osl_shutdownSocket(oslSocket Socket, oslSocketDirection Direction)
Shuts down communication on a connected socket.
Definition: condition.hxx:28
__osl_socket_NoCopy
Definition: socket_decl.hxx:33
@ SAL_NO_COPY
Definition: socket_decl.hxx:33
This is the binary specification of a SAL sequence.
Definition: types.h:300
C++ class representing a SAL byte sequence.
Definition: byteseq.h:166
This String class provides base functionality for C++ like Unicode character array handling.
Definition: ustring.hxx:161
The class should be understood as a reference to a socket address handle (struct sockaddr).
Definition: socket_decl.hxx:40
inline ::rtl::OUString getHostname(oslSocketResult *pResult=NULL) const
Converts the address to a (human readable) domain-name.
Definition: socket.hxx:83
bool operator==(oslSocketAddr Addr) const
Returns true if the underlying handle is identical to the Addr handle.
Definition: socket.hxx:163
static void resolveHostname(const ::rtl::OUString &strHostName, SocketAddr &Addr)
Tries to find an address for a host.
Definition: socket.hxx:188
inline ::rtl::ByteSequence getAddr(oslSocketResult *pResult=NULL) const
Returns the address of the underlying socket in network byte order.
Definition: socket.hxx:117
bool setPort(sal_Int32 nPort)
Sets the port number of the address.
Definition: socket.hxx:99
bool setAddr(const ::rtl::ByteSequence &address)
Sets the address of the underlying socket address struct in network byte order.
Definition: socket.hxx:111
SocketAddr & operator=(oslSocketAddr Addr)
assign the handle to this reference.
Definition: socket.hxx:127
static inline ::rtl::OUString getLocalHostname(oslSocketResult *pResult=NULL)
Get the hostname for the local interface.
Definition: socket.hxx:179
oslSocketAddr getHandle() const
Returns the underlying SocketAddr handle without copyconstructing it.
Definition: socket.hxx:168
SocketAddr & assign(oslSocketAddr Addr, __osl_socket_NoCopy nocopy)
Assigns the socket addr without copyconstructing it.
Definition: socket.hxx:154
bool setHostname(const ::rtl::OUString &sDottedIpOrHostname)
Sets the IP address or hostname of the SocketAddress.
Definition: socket.hxx:104
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:194
SocketAddr()
Creates socket address of unknown type.
Definition: socket.hxx:27
sal_Int32 getPort() const
Returns the port number of the address.
Definition: socket.hxx:93
bool is() const
Checks if the SocketAddr was created successful.
Definition: socket.hxx:174
oslSocketAddr m_handle
Definition: socket_decl.hxx:42
~SocketAddr()
destroys underlying oslSocketAddress
Definition: socket.hxx:76
Definition: socket_decl.hxx:192
sal_Int32 getPeerPort() const
Get the remote port of the socket.
Definition: socket.hxx:302
oslSocket getHandle() const
Returns the underlying handle unacquired (The caller must acquire it to keep it).
Definition: socket.hxx:414
bool setOption(oslSocketOption Option, void *pBuffer, sal_uInt32 BufferLen, oslSocketOptionLevel Level=osl_Socket_LevelSocket) const
Sets the sockets attributes.
Definition: socket.hxx:358
void shutdown(oslSocketDirection Direction=osl_Socket_DirReadWrite)
Closes a definite or both directions of the bidirectional stream.
Definition: socket.hxx:262
bool isNonBlockingMode() const
Query blocking mode of the socket.
Definition: socket.hxx:387
oslSocketError getError() const
returns a constant describing the last error for the socket system.
Definition: socket.hxx:400
inline ::rtl::OUString getErrorAsString() const
Builds a string with the last error-message for the socket.
Definition: socket.hxx:406
inline ::rtl::OUString getPeerHost() const
Get the hostname for the remote interface.
Definition: socket.hxx:310
sal_Int32 getLocalPort() const
Get the local port of the socket.
Definition: socket.hxx:280
void getPeerAddr(SocketAddr &Addr) const
Retrieves the address of the remote host of this socket.
Definition: socket.hxx:296
bool bind(const SocketAddr &LocalInterface)
Binds the socket to the specified (local) interface.
Definition: socket.hxx:318
oslSocketType getType() const
Queries the socket for its type.
Definition: socket.hxx:342
bool isSendReady(const TimeValue *pTimeout=NULL) const
Checks if send operations will block.
Definition: socket.hxx:330
void getLocalAddr(SocketAddr &Addr) const
Retrieves the address of the local interface of this socket.
Definition: socket.hxx:274
void close()
Closes a socket.
Definition: socket.hxx:268
bool isRecvReady(const TimeValue *pTimeout=NULL) const
Checks if read operations will block.
Definition: socket.hxx:324
inline ::rtl::OUString getLocalHost() const
Get the hostname for the local interface.
Definition: socket.hxx:288
bool isExceptionPending(const TimeValue *pTimeout=NULL) const
Checks if a request for out-of-band data will block.
Definition: socket.hxx:336
oslSocket m_handle
Definition: socket_decl.hxx:194
void clearError() const
clears the error status
Definition: socket.hxx:393
bool enableNonBlockingMode(bool bNonBlockingMode)
Enables/disables non-blocking mode of the socket.
Definition: socket.hxx:381
bool operator==(const Socket &rSocket) const
Definition: socket.hxx:250
sal_Int32 getOption(oslSocketOption Option, void *pBuffer, sal_uInt32 BufferLen, oslSocketOptionLevel Level=osl_Socket_LevelSocket) const
Retrieves option-attributes associated with the socket.
Definition: socket.hxx:348
Socket & operator=(oslSocket socketHandle)
Assignment operator.
Definition: socket.hxx:234
~Socket()
Destructor.
Definition: socket.hxx:228
Definition: socket_decl.hxx:527
StreamSocket(oslAddrFamily Family=osl_Socket_FamilyInet, oslProtocol Protocol=osl_Socket_ProtocolIp, oslSocketType Type=osl_Socket_TypeStream)
Creates a socket.
Definition: socket.hxx:420
sal_Int32 write(const void *pBuffer, sal_uInt32 n)
Writes n bytes from pBuffer to the stream.
Definition: socket.hxx:443
sal_Int32 read(void *pBuffer, sal_uInt32 n)
Retrieves n bytes from the stream and copies them into pBuffer.
Definition: socket.hxx:437
sal_Int32 send(const void *pBuffer, sal_uInt32 BytesToSend, oslSocketMsgFlag=osl_Socket_MsgNormal)
Tries to send BytesToSend data to the connected socket.
Definition: socket.hxx:457
sal_Int32 recv(void *pBuffer, sal_uInt32 BytesToRead, oslSocketMsgFlag flags=osl_Socket_MsgNormal)
Tries to receive BytesToRead data from the connected socket,.
Definition: socket.hxx:449
ConnectorSocket(oslAddrFamily Family=osl_Socket_FamilyInet, oslProtocol Protocol=osl_Socket_ProtocolIp, oslSocketType Type=osl_Socket_TypeStream)
Creates a socket that can connect to a (remote) host.
Definition: socket.hxx:465
oslSocketResult connect(const SocketAddr &TargetHost, const TimeValue *pTimeout=NULL)
Connects the socket to a (remote) host.
Definition: socket.hxx:472
oslSocketResult acceptConnection(StreamSocket &Connection)
Accepts incoming connections on the socket.
Definition: socket.hxx:492
bool listen(sal_Int32 MaxPendingConnections=-1)
Prepare a socket for the accept-call.
Definition: socket.hxx:486
AcceptorSocket(oslAddrFamily Family=osl_Socket_FamilyInet, oslProtocol Protocol=osl_Socket_ProtocolIp, oslSocketType Type=osl_Socket_TypeStream)
Definition: socket.hxx:479
DatagramSocket(oslAddrFamily Family=osl_Socket_FamilyInet, oslProtocol Protocol=osl_Socket_ProtocolIp, oslSocketType Type=osl_Socket_TypeDgram)
Creates a datagram socket.
Definition: socket.hxx:529
sal_Int32 sendTo(const SocketAddr &ReceiverAddr, const void *pBuffer, sal_uInt32 BufferSize, oslSocketMsgFlag Flag=osl_Socket_MsgNormal)
Tries to send one datagram with BytesToSend size to the given ReceiverAddr.
Definition: socket.hxx:556
sal_Int32 recvFrom(void *pBuffer, sal_uInt32 BufferSize, SocketAddr *pSenderAddr=NULL, oslSocketMsgFlag Flag=osl_Socket_MsgNormal)
Tries to receives BufferSize data from the socket, if no error occurs.
Definition: socket.hxx:536
Definition: time.h:66