FARGOS/VISTA Object Management Environment Core  ..
FARGOS/VISTA Object Management Environment Core Table of Contents
OMEsocket.h
Go to the documentation of this file.
1 #ifndef _OME_SOCKET_H
2 #define _OME_SOCKET_H "$Id: OMEsocket.h 357 2020-06-18 23:13:25Z geoff $"
4 
6 #include <OMEioObjects.h>
7 
13 protected:
14 static OMEioDescriptor *openSocket(struct sockaddr *sock, int sockLen,
15  uint32_t openMode, int *errRet = nullptr);
16 public:
17 static OMEioDescriptor *openSocketScheme(const OMEstring &url, int *errRet = nullptr);
18 protected:
19  uint32_t savedOpenMode;
20  int openSides;
23 #ifdef _WIN32
24  static bool selectCallback(OMEevent *event, OMEthread *thread);
25  WSAEVENT eventHandle;
26  uint32_t eventMask;
27  uint32_t activeEvents;
28  OMEeventCallbackFP readCallback;
29  OMEeventCallbackFP writeCallback;
30 
31 #endif
32 public:
34 
36 
37 #ifdef _WIN32
38  // the WSAEVENT is the selectable handle, not the descriptor
39  virtual uint64_t getSelectHandle() const override {
40  return (reinterpret_cast<const uint64_t>(eventHandle));
41  }
42 #endif
43 
44  virtual int readBytes(unsigned char *bfr, size_t bytes, size_t *actualBytes, int *errRet) override;
45 
46  virtual int writeBytes(const unsigned char *bfr, size_t bytes, size_t *actualBytes, int *errRet) override;
47 
48 #ifndef _WIN32
49  virtual int writeVectorOfBytes(const OMEioVector *v, uint_fast16_t elementCount,
50  size_t *actualBytes, int *errRet, size_t skipBytes = 0) override;
51 #endif
52  virtual OMEevent *selectForRead(OMEeventCallbackFP func, OMEthread *t = nullptr) override;
53 
54  virtual OMEevent *selectForWrite(OMEeventCallbackFP func, OMEthread *t = nullptr) override;
55 
56  virtual int close(int mask) override;
57 
58  virtual OMEstring *getLocalAddress() const override;
59 
60  virtual OMEstring *getPeerAddress() const override;
61 
62  virtual int getErrorStatus() const override;
63 
64  virtual bool isOpen() const override { return (openSides != 0); }
65 
66  virtual OMEioDescriptor *acceptConnection(int *errRet) override;
67 
68  virtual int receiveDatagram(unsigned char *bfr, size_t bytes,
69  size_t *actualBytes, OMEstring *fromInfo, int *errRet) override;
70 
71  virtual int sendDatagram(const unsigned char *bfr, size_t bytes,
72  size_t *actualBytes, const char *toInfo, int *errRet) override;
73 }; // end class OMEsocketDescriptor
74 
76 protected:
78 public:
80  const char *fileName);
81 
83 }; // end class OMEunixDomainDescriptor
84 
86 
89 #endif
90 /* vim: set expandtab shiftwidth=4 tabstop=4: */
OMEeventCallbackFP
bool(* OMEeventCallbackFP)(class OMEevent *, OMEthread *)
Definition: OMEevent.h:16
OMEioDescriptor::listen
@ listen
Definition: OMEioObjects.h:28
OMEstring::substr
ssize_t substr(const OMEstring &sub, size_t startOffset=0) const
Definition: OMEstring.h:490
sock
SOCKET sock
Definition: sockspx.c:203
OMEioEvent::socket
@ socket
Definition: OMEioEvents.h:20
OMEtype::initializeAsType
void initializeAsType(const enum OMEtypes_t t)
The fundamental tagged data type used through the FARGOS/VISTA infrastructure.
Definition: OMEtype.cpp:95
OMEprofileCounter< uint32_t >
OMEsocketDescriptor::getErrorStatus
virtual int getErrorStatus() const override
Definition: OMEsocket.cpp:942
s
const char s[]
Definition: t.cpp:4
OMEsocketDescriptor::acceptConnection
virtual OMEioDescriptor * acceptConnection(int *errRet) override
Definition: OMEsocket.cpp:767
OMEfunctions.h
OME utility functions.
OMEioObjects.h
OMEdisplayableAddress
OMEstring * OMEdisplayableAddress(const struct sockaddr *sock, const int len, const uint32_t openMode)
Convert sockaddr data into a text string.
Definition: OMEaddr.cpp:349
OMEioDescriptor::nonblocking
@ nonblocking
Definition: OMEioObjects.h:31
OMEsocketDescriptor::selectedForRead
bool selectedForRead
Definition: OMEsocket.h:21
OMEioEvent::selectRead
@ selectRead
Definition: OMEioEvents.h:21
OMEioEvent::selectWrite
@ selectWrite
Definition: OMEioEvents.h:21
OMEioDescriptor::raw
@ raw
Definition: OMEioObjects.h:32
OMEstring
Implements text and binary string storage.
Definition: OMEstring.h:305
EAGAIN
#define EAGAIN
Definition: tmp.o.cpp:64
OMEsocketDescriptor::readBytes
virtual int readBytes(unsigned char *bfr, size_t bytes, size_t *actualBytes, int *errRet) override
Definition: OMEsocket.cpp:428
OUR_sockaddr_in6
#define OUR_sockaddr_in6
Definition: OMEsocket.cpp:115
OMEunixDomainDescriptor::OMEunixDomainDescriptor
OMEunixDomainDescriptor(uint64_t handle, OMEioDescriptor::OMEopenMode t, const char *fileName)
Definition: OMEsocket.cpp:968
OMEtype::value
union OMEtype::@26 value
OMEtype
Fundamental ANY type for FARGOS/VISTA Object Management Environment.
Definition: OMEbaseType.h:250
OMEsocketDescriptor::openSocket
static OMEioDescriptor * openSocket(struct sockaddr *sock, int sockLen, uint32_t openMode, int *errRet=nullptr)
Definition: OMEsocket.cpp:155
OMEioEvent
I/O-specific event.
Definition: OMEioEvents.h:16
OMEsocketDescriptor::getLocalAddress
virtual OMEstring * getLocalAddress() const override
Definition: OMEsocket.cpp:929
MAX_IO_VECTORS
#define MAX_IO_VECTORS
Definition: OMEsocket.cpp:62
LOG_COUT
#define LOG_COUT(lvl)
Convenience macro that uses LOG_INTO() to conditionally log a message to standard output.
Definition: logging_api.hpp:3007
OMEtype::s
class OMEstring * s
Definition: OMEbaseType.h:299
OMEsocketDescriptor
Networking-specific I/O descriptor.
Definition: OMEsocket.h:12
OMEsocketDescriptor::selectForRead
virtual OMEevent * selectForRead(OMEeventCallbackFP func, OMEthread *t=nullptr) override
Definition: OMEsocket.cpp:705
OMEioDescriptor::multicast
@ multicast
Definition: OMEioObjects.h:32
OMEcore.h
ntohs
#define ntohs(x)
Definition: tmp.o.cpp:3103
OMEioDescriptor::datagram
@ datagram
Definition: OMEioObjects.h:32
OMEsocketDescriptor::openSocketScheme
static OMEioDescriptor * openSocketScheme(const OMEstring &url, int *errRet=nullptr)
Definition: OMEsocket.cpp:366
OMEsocketDescriptor::close
virtual int close(int mask) override
Definition: OMEsocket.cpp:752
srcID
const char srcID[]
Definition: catSym.c:17
OME_STRING
@ OME_STRING
Definition: OMEmanifests.h:85
OMEevent::extraData
void * extraData
Any event-specific data.
Definition: OMEevent.h:33
CLOSE_SOCKET
#define CLOSE_SOCKET(f)
Definition: OMEsocket.cpp:26
OMEsocketDescriptor::sendDatagram
virtual int sendDatagram(const unsigned char *bfr, size_t bytes, size_t *actualBytes, const char *toInfo, int *errRet) override
Definition: OMEsocket.cpp:871
OMEsocketDescriptor::selectForWrite
virtual OMEevent * selectForWrite(OMEeventCallbackFP func, OMEthread *t=nullptr) override
Definition: OMEsocket.cpp:734
OMEunixDomainDescriptor::socketFileName
OMEstring socketFileName
Definition: OMEsocket.h:77
OMEsocketDescriptor::OMEsocketDescriptor
OMEsocketDescriptor(uint64_t handle, OMEioDescriptor::OMEopenMode t)
Definition: OMEsocket.cpp:390
OME_NIL
@ OME_NIL
Definition: OMEmanifests.h:78
OMEioDescriptor::getSelectHandle
uint64_t getSelectHandle() const OME_ALWAYS_INLINE
Definition: OMEioObjects.h:50
OMEsocketDescriptor::getPeerAddress
virtual OMEstring * getPeerAddress() const override
Definition: OMEsocket.cpp:951
OMEsocketDescriptor::savedOpenMode
uint32_t savedOpenMode
Definition: OMEsocket.h:19
OMEtype.h
OME fundamental type implementation.
OMEioDescriptor::adjustVector
uint_fast16_t adjustVector(OMEioVector *result, uint_fast16_t count, const OMEioVector *v, size_t skipCount)
Definition: OMEioObjects.cpp:121
OMEioVector
Equivalent of iov structure.
Definition: OMEioObjects.h:18
OMEsocketDescriptor::writeBytes
virtual int writeBytes(const unsigned char *bfr, size_t bytes, size_t *actualBytes, int *errRet) override
Definition: OMEsocket.cpp:460
OMEsocket.h
OMEtype::ui
uint32_t ui
Definition: OMEbaseType.h:286
OMEioDescriptor::OMEopenMode
OMEopenMode
Definition: OMEioObjects.h:28
OMEstring::length
size_t length() const
Definition: OMEstring.h:401
OMEunixDomainDescriptor::~OMEunixDomainDescriptor
~OMEunixDomainDescriptor()
Definition: OMEsocket.cpp:979
OME_USED
const char srcID[] OME_USED
Definition: tick_time.cpp:24
OMEregisterStandardSocketSchemes
void OMEregisterStandardSocketSchemes()
Register standard socket-related I/O transport schemes.
Definition: OMEsocket.cpp:1083
OMEsocketDescriptor::openSides
int openSides
Definition: OMEsocket.h:20
OMEdefOIL2func
Record to define the implementation of an OIL2 function.
Definition: OMEthread.h:287
OMEioDescriptor::ioHandle
uint64_t ioHandle
Definition: OMEioObjects.h:36
OMEtransportToSockaddr
int OMEtransportToSockaddr(sockBigEnough *sock, uint_fast16_t *sockLen, int *sockMode, const char *url, uint_fast16_t urlLen)
Convert textual transport address into sockaddr structure.
Definition: OMEaddr.cpp:702
errno
int errno
Definition: ethers.c:41
OMEsocketDescriptor::writeVectorOfBytes
virtual int writeVectorOfBytes(const OMEioVector *v, uint_fast16_t elementCount, size_t *actualBytes, int *errRet, size_t skipBytes=0) override
Definition: OMEsocket.cpp:505
OMEioDescriptor::connect
@ connect
Definition: OMEioObjects.h:29
OMEsocketDescriptor::selectedForWrite
bool selectedForWrite
Definition: OMEsocket.h:22
OMEevent
Base class for events within the FARGOS/VISTA Object Management Environment.
Definition: OMEevent.h:22
elementCount
int elementCount(OMEthread *thread, OMEtype &result, const OMEtype &arg)
Definition: OILtypeFuncs.cpp:168
dottedAddress
int dottedAddress(OMEthread *thread, OMEtype &result, const OMEtype &arg)
Definition: OMEsocket.cpp:1063
OMEmethodSignature
uint32_t OMEmethodSignature(const int argc, const uint32_t types[], uint32_t *maskPtr)
Compute 32-bit signature of a method's arguments.
Definition: OMEsignature.cpp:15
OMEdebugInfo.h
OME debug and profiling interfaces.
OME_DLL_EXPORT
#define OME_DLL_EXPORT
Definition: compiler_hints.h:464
OMEthread
Public interface to an OME thread.
Definition: OMEthread.h:60
LOG_ENDLINE
#define LOG_ENDLINE
Closing clause for text line output using << operators.
Definition: logging_api.hpp:2956
OME_ANY
@ OME_ANY
Definition: OMEmanifests.h:93
OMEsocketDescriptor::isOpen
virtual bool isOpen() const override
Definition: OMEsocket.h:64
OMEsocketDescriptor::~OMEsocketDescriptor
~OMEsocketDescriptor()
Definition: OMEsocket.cpp:410
OMEtype::type
uint32_t type
Definition: OMEbaseType.h:304
OMEregisterIOscheme
int OMEregisterIOscheme(const OMEstring &prefix, OMEopenSchemeFP func)
Register support for new I/O transport scheme.
Definition: OMEioObjects.cpp:219
EINPROGRESS
#define EINPROGRESS
Definition: tmp.o.cpp:92
OME_ARRAY
@ OME_ARRAY
Definition: OMEmanifests.h:86
lookupAddress
int lookupAddress(OMEthread *thread, OMEtype &result, const OMEtype &hostOrAddress)
Definition: OMEsocket.cpp:997
OMEioDescriptor
Base class for open files and sockets.
Definition: OMEioObjects.h:26
INIT_DECLARE_socket
OME_DLL_EXPORT void INIT_DECLARE_socket()
Definition: OMEsocket.cpp:1105
fd
int fd
Definition: ethers.c:41
OMEsocketDescriptor::receiveDatagram
virtual int receiveDatagram(unsigned char *bfr, size_t bytes, size_t *actualBytes, OMEstring *fromInfo, int *errRet) override
Definition: OMEsocket.cpp:825
ERROR_CODE
#define ERROR_CODE
Definition: OMEsocket.cpp:25
OME_INT32
@ OME_INT32
Definition: OMEmanifests.h:79
OMEunixDomainDescriptor
Unix file-domain socket-specific I/O descriptor.
Definition: OMEsocket.h:75
LOG_CERR
#define LOG_CERR(lvl)
Convenience macro that uses LOG_INTO() to conditionally log a message to standard error.
Definition: logging_api.hpp:3014
logging_api.hpp
FARGOS Logging API.
Generated: Fri Jul 31 2020 18:19:15
Support Information