Qore Programming Language 1.19.5
Loading...
Searching...
No Matches
QoreSocket.h
1/* -*- mode: c++; indent-tabs-mode: nil -*- */
2/*
3 QoreSocket.h
4
5 IPv4, IPv6, unix socket class with SSL support
6
7 Qore Programming Language
8
9 Copyright (C) 2003 - 2023 Qore Technologies, s.r.o.
10
11 will unlink (delete) UNIX domain socket files when closed
12
13 Permission is hereby granted, free of charge, to any person obtaining a
14 copy of this software and associated documentation files (the "Software"),
15 to deal in the Software without restriction, including without limitation
16 the rights to use, copy, modify, merge, publish, distribute, sublicense,
17 and/or sell copies of the Software, and to permit persons to whom the
18 Software is furnished to do so, subject to the following conditions:
19
20 The above copyright notice and this permission notice shall be included in
21 all copies or substantial portions of the Software.
22
23 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29 DEALINGS IN THE SOFTWARE.
30
31 Note that the Qore library is released under a choice of three open-source
32 licenses: MIT (as above), LGPL 2+, or GPL 2+; see README-LICENSE for more
33 information.
34*/
35
36#ifndef _QORE_QORESOCKET_H
37
38#define _QORE_QORESOCKET_H
39
40#include <qore/Qore.h>
41#include <qore/InputStream.h>
42#include <qore/OutputStream.h>
43#include <qore/AbstractPollState.h>
44
45#include <cctype>
46#include <cstdlib>
47#include <cstring>
48#include <strings.h>
49#include <sys/types.h>
50#include <unistd.h>
51
52#include <openssl/ssl.h>
53#include <openssl/err.h>
54
55#define QSE_MISC_ERR 0
56#define QSE_RECV_ERR -1
57#define QSE_NOT_OPEN -2
58#define QSE_TIMEOUT -3
59#define QSE_SSL_ERR -4
60#define QSE_IN_OP -5
61#define QSE_IN_OP_THREAD -6
62
63// forward references
64class Queue;
67
69
77 friend hashdecl qore_socket_private;
78
79private:
80 hashdecl qore_socketsource_private *priv; // private implementation
81
83 DLLLOCAL SocketSource(const SocketSource&);
84
86 DLLLOCAL SocketSource& operator=(const SocketSource&);
87
88public:
90 DLLEXPORT SocketSource();
91
93 DLLEXPORT ~SocketSource();
94
96
99
101
104
106
108 DLLEXPORT const char* getAddress() const;
109
111
113 DLLEXPORT const char* getHostName() const;
114
115 DLLLOCAL void setAll(QoreObject* o, ExceptionSink* xsink);
116};
117
119
130 friend hashdecl qore_socket_private;
131 friend hashdecl qore_httpclient_priv;
132 friend class QoreSocketObject;
133 friend class QoreFtpClient;
134 friend class HttpClientRecvHeaderPollState;
135 friend class HttpClientRecvChunkedPollState;
136 friend class HttpClientRecvUntilClosePollState;
137 friend class HttpClientConnectSendRecvPollOperation;
138 friend class my_socket_priv;
139
140public:
142 DLLEXPORT QoreSocket();
143
145 DLLEXPORT ~QoreSocket();
146
148
158 DLLEXPORT AbstractPollState* startConnect(ExceptionSink* xsink, const char* name);
159
161
170 DLLEXPORT AbstractPollState* startSslConnect(ExceptionSink* xsink, QoreSSLCertificate* cert = nullptr,
171 QoreSSLPrivateKey* pkey = nullptr);
172
174
183 DLLEXPORT AbstractPollState* startSend(ExceptionSink* xsink, const char* data, size_t size);
184
186
194 DLLEXPORT AbstractPollState* startRecv(ExceptionSink* xsink, size_t size);
195
197
207 DLLEXPORT AbstractPollState* startRecvUntilBytes(ExceptionSink* xsink, const char* pattern, size_t size);
208
209#if 0
211
218 DLLEXPORT AbstractPollState* startAccept(ExceptionSink* xsink);
219
221
228 DLLEXPORT AbstractPollState* startSslAccept(ExceptionSink* xsink, QoreSSLCertificate* cert = nullptr,
229 QoreSSLPrivateKey* pkey = nullptr);
230#endif
231
233
244 DLLEXPORT int connect(const char* name, ExceptionSink* xsink = nullptr);
245
247
259 DLLEXPORT int connect(const char* name, int timeout_ms, ExceptionSink* xsink = nullptr);
260
262
272 DLLEXPORT int connectINET(const char* host, int prt, ExceptionSink* xsink = nullptr);
273
275
289 DLLEXPORT int connectINET2(const char* name, const char* service, int family = Q_AF_UNSPEC,
290 int sock_type = Q_SOCK_STREAM, int protocol = 0, int timeout_ms = -1, ExceptionSink* xsink = nullptr);
291
293
304 DLLEXPORT int connectINET(const char* host, int prt, int timeout_ms, ExceptionSink* xsink = nullptr);
305
307
316 DLLEXPORT int connectUNIX(const char* p, ExceptionSink* xsink = nullptr);
317
319
330 DLLEXPORT int connectUNIX(const char* p, int socktype, int protocol = 0, ExceptionSink* xsink = nullptr);
331
333
352 DLLEXPORT int connectSSL(ExceptionSink* xsink, const char* name, QoreSSLCertificate* cert = nullptr,
353 QoreSSLPrivateKey* pkey = nullptr);
354
356
376 DLLEXPORT int connectSSL(ExceptionSink* xsink, const char* name, int timeout_ms, QoreSSLCertificate* cert = nullptr,
377 QoreSSLPrivateKey* pkey = nullptr);
378
380
398 DLLEXPORT int connectINETSSL(ExceptionSink* xsink, const char* host, int prt, QoreSSLCertificate* cert = nullptr,
399 QoreSSLPrivateKey* pkey = nullptr);
400
402
421 DLLEXPORT int connectINETSSL(ExceptionSink* xsink, const char* host, int prt, int timeout_ms,
422 QoreSSLCertificate* cert = nullptr, QoreSSLPrivateKey* pkey = nullptr);
423
425
443 DLLEXPORT int connectINET2SSL(ExceptionSink* xsink, const char* name, const char* service, int family,
444 int sock_type, int protocol, int timeout_ms, QoreSSLCertificate* cert = nullptr,
445 QoreSSLPrivateKey* pkey = nullptr);
446
448
465 DLLEXPORT int connectUNIXSSL(ExceptionSink* xsink, const char* p, QoreSSLCertificate* cert = nullptr,
466 QoreSSLPrivateKey* pkey = nullptr);
467
469
488 DLLEXPORT int connectUNIXSSL(ExceptionSink* xsink, const char* p, int socktype, int protocol,
489 QoreSSLCertificate* cert = nullptr, QoreSSLPrivateKey* pkey = nullptr);
490
492
498 DLLEXPORT int bind(const char* name, bool reuseaddr = false);
499
501
506 DLLEXPORT int bind(int prt, bool reuseaddr);
507
509
515 DLLEXPORT int bind(const char* iface, int prt, bool reuseaddr = false);
516
518
525 DLLEXPORT int bind(const struct sockaddr *addr, int addr_size);
526
528
536 DLLEXPORT int bind(int family, const struct sockaddr *addr, int addr_size, int socktype = Q_SOCK_STREAM,
537 int protocol = 0);
538
540
548 DLLEXPORT int bindUNIX(const char* name, ExceptionSink* xsink = nullptr);
549
551
561 DLLEXPORT int bindUNIX(const char* name, int socktype, int protocol = 0, ExceptionSink* xsink = nullptr);
562
564
577 DLLEXPORT int bindINET(const char* name, const char* service, bool reuseaddr = true, int family = Q_AF_UNSPEC,
578 int socktype = Q_SOCK_STREAM, int protocol = 0, ExceptionSink* xsink = nullptr);
579
581 DLLEXPORT int getPort();
582
584
596 DLLEXPORT QoreSocket* accept(SocketSource* source, ExceptionSink* xsink);
597
599
615 QoreSSLPrivateKey* pkey);
616
618
630 DLLEXPORT int acceptAndReplace(SocketSource* source);
631
633
645 DLLEXPORT QoreSocket* accept(int timeout_ms, ExceptionSink* xsink);
646
648
664 DLLEXPORT QoreSocket* acceptSSL(ExceptionSink* xsink, int timeout_ms, QoreSSLCertificate* cert = nullptr,
665 QoreSSLPrivateKey* pkey = nullptr);
666
668
680 DLLEXPORT int acceptAndReplace(int timeout_ms, ExceptionSink* xsink);
681
683
686 DLLEXPORT int listen();
687
689
695 DLLEXPORT int listen(int backlog);
696
698
704 DLLEXPORT int send(const char* buf, size_t size);
705
707
714 DLLEXPORT int send(const char* buf, size_t size, ExceptionSink* xsink);
715
717
725 DLLEXPORT int send(const char* buf, size_t size, int timeout_ms, ExceptionSink* xsink);
726
728
734 DLLEXPORT int send(const QoreString *msg, ExceptionSink* xsink);
735
737
744 DLLEXPORT int send(const QoreString *msg, int timeout_ms, ExceptionSink* xsink);
745
747
756 DLLEXPORT int send(const QoreStringNode& msg, int timeout_ms, ExceptionSink* xsink);
757
759
764 DLLEXPORT int send(const BinaryNode* msg);
765
767
773 DLLEXPORT int send(const BinaryNode* msg, ExceptionSink* xsink);
774
776
783 DLLEXPORT int send(const BinaryNode* msg, int timeout_ms, ExceptionSink* xsink);
784
786
792 DLLEXPORT int send(int fd, qore_offset_t size = -1);
793
795
805 DLLEXPORT int send(int fd, qore_offset_t size, int timeout_ms, ExceptionSink* xsink);
806
808
812 DLLEXPORT int sendi1(char i);
813
815
820 DLLEXPORT int sendi2(short i);
821
823
828 DLLEXPORT int sendi4(int i);
829
831
836 DLLEXPORT int sendi8(int64 i);
837
839
845 DLLEXPORT int sendi2LSB(short i);
846
848
854 DLLEXPORT int sendi4LSB(int i);
855
857
863 DLLEXPORT int sendi8LSB(int64 i);
864
866
874 DLLEXPORT int sendi1(char i, int timeout_ms, ExceptionSink* xsink);
875
877
886 DLLEXPORT int sendi2(short i, int timeout_ms, ExceptionSink* xsink);
887
889
898 DLLEXPORT int sendi4(int i, int timeout_ms, ExceptionSink* xsink);
899
901
910 DLLEXPORT int sendi8(int64 i, int timeout_ms, ExceptionSink* xsink);
911
913
923 DLLEXPORT int sendi2LSB(short i, int timeout_ms, ExceptionSink* xsink);
924
926
936 DLLEXPORT int sendi4LSB(int i, int timeout_ms, ExceptionSink* xsink);
937
939
949 DLLEXPORT int sendi8LSB(int64 i, int timeout_ms, ExceptionSink* xsink);
950
952
961 DLLEXPORT int recvi1(int timeout_ms, char* val);
962
964
974 DLLEXPORT int recvi2(int timeout_ms, short *val);
975
977
987 DLLEXPORT int recvi4(int timeout_ms, int* val);
988
990
1000 DLLEXPORT int recvi8(int timeout_ms, int64 *val);
1001
1003
1014 DLLEXPORT int recvi2LSB(int timeout_ms, short *val);
1015
1017
1028 DLLEXPORT int recvi4LSB(int timeout_ms, int* val);
1029
1031
1040 DLLEXPORT int recvi8LSB(int timeout_ms, int64 *val);
1041
1043
1051 DLLEXPORT int recvu1(int timeout_ms, unsigned char* val);
1052
1054
1064 DLLEXPORT int recvu2(int timeout_ms, unsigned short *val);
1065
1067
1077 DLLEXPORT int recvu4(int timeout_ms, unsigned int* val);
1078
1080
1092 DLLEXPORT int recvu2LSB(int timeout_ms, unsigned short *val);
1093
1095
1107 DLLEXPORT int recvu4LSB(int timeout_ms, unsigned int* val);
1108
1110
1120 DLLEXPORT int64 recvi1(int timeout_ms, char* val, ExceptionSink* xsink);
1121
1123
1134 DLLEXPORT int64 recvi2(int timeout_ms, short *val, ExceptionSink* xsink);
1135
1137
1149 DLLEXPORT int64 recvi4(int timeout_ms, int* val, ExceptionSink* xsink);
1150
1152
1163 DLLEXPORT int64 recvi8(int timeout_ms, int64 *val, ExceptionSink* xsink);
1164
1166
1179 DLLEXPORT int64 recvi2LSB(int timeout_ms, short *val, ExceptionSink* xsink);
1180
1182
1195 DLLEXPORT int64 recvi4LSB(int timeout_ms, int* val, ExceptionSink* xsink);
1196
1198
1209 DLLEXPORT int64 recvi8LSB(int timeout_ms, int64 *val, ExceptionSink* xsink);
1210
1212
1222 DLLEXPORT int64 recvu1(int timeout_ms, unsigned char* val, ExceptionSink* xsink);
1223
1225
1237 DLLEXPORT int64 recvu2(int timeout_ms, unsigned short *val, ExceptionSink* xsink);
1238
1240
1252 DLLEXPORT int64 recvu4(int timeout_ms, unsigned int* val, ExceptionSink* xsink);
1253
1255
1269 DLLEXPORT int64 recvu2LSB(int timeout_ms, unsigned short *val, ExceptionSink* xsink);
1270
1272
1286 DLLEXPORT int64 recvu4LSB(int timeout_ms, unsigned int* val, ExceptionSink* xsink);
1287
1289
1298 DLLEXPORT QoreStringNode* recv(qore_offset_t bufsize, int timeout_ms, int* prc);
1299
1301
1310 DLLEXPORT QoreStringNode* recv(qore_offset_t bufsize, int timeout_ms, ExceptionSink* xsink);
1311
1313
1320 DLLEXPORT BinaryNode* recvBinary(qore_offset_t bufsize, int timeout_ms, int* prc);
1321
1323
1330 DLLEXPORT BinaryNode* recvBinary(qore_offset_t bufsize, int timeout_ms, ExceptionSink* xsink);
1331
1333
1344 DLLEXPORT QoreStringNode* recv(int timeout_ms, int* prc);
1345
1347
1358 DLLEXPORT QoreStringNode* recv(int timeout_ms, ExceptionSink* xsink);
1359
1361
1371 DLLEXPORT BinaryNode* recvBinary(int timeout_ms, int* prc);
1372
1374
1384 DLLEXPORT BinaryNode* recvBinary(int timeout_ms, ExceptionSink* xsink);
1385
1387
1397 DLLEXPORT int recv(int fd, qore_offset_t size, int timeout_ms);
1398
1400
1413 DLLEXPORT int recv(int fd, qore_offset_t size, int timeout_ms, ExceptionSink* xsink);
1414
1416
1427 DLLEXPORT int sendHTTPMessage(const char* method, const char* path, const char* http_version, const QoreHashNode* headers, const void* data, size_t size, int source = QORE_SOURCE_SOCKET);
1428
1430
1442 DLLEXPORT int sendHTTPMessage(QoreHashNode* info, const char* method, const char* path, const char* http_version, const QoreHashNode* headers, const void* data, size_t size, int source = QORE_SOURCE_SOCKET);
1443
1445
1459 DLLEXPORT int sendHTTPMessage(ExceptionSink* xsink, QoreHashNode* info, const char* method, const char* path, const char* http_version, const QoreHashNode* headers, const void* data, size_t size, int source = QORE_SOURCE_SOCKET);
1460
1462
1477 DLLEXPORT int sendHTTPMessage(ExceptionSink* xsink, QoreHashNode* info, const char* method, const char* path, const char* http_version, const QoreHashNode* headers, const void* data, size_t size, int source, int timeout_ms);
1478
1480
1494 DLLEXPORT int sendHTTPMessageWithCallback(ExceptionSink* xsink, QoreHashNode* info, const char* method, const char* path, const char* http_version, const QoreHashNode* headers, const ResolvedCallReferenceNode& send_callback, int source, int timeout_ms);
1495
1497
1509 DLLEXPORT int sendHTTPResponse(int code, const char* desc, const char* http_version, const QoreHashNode* headers, const void* data, size_t size, int source = QORE_SOURCE_SOCKET);
1510
1512
1525 DLLEXPORT int sendHTTPResponse(ExceptionSink* xsink, int code, const char* desc, const char* http_version, const QoreHashNode* headers, const void* data, size_t size, int source = QORE_SOURCE_SOCKET);
1526
1528
1542 DLLEXPORT int sendHTTPResponse(ExceptionSink* xsink, int code, const char* desc, const char* http_version, const QoreHashNode* headers, const void* data, size_t size, int source, int timeout_ms);
1543
1545
1562 DLLEXPORT int sendHTTPResponse(ExceptionSink* xsink, QoreHashNode* info, int code, const char* desc,
1563 const char* http_version, const QoreHashNode* headers, const void* data, size_t size, int source,
1564 int timeout_ms);
1565
1567
1576 DLLEXPORT AbstractQoreNode* readHTTPHeader(int timeout_ms, int* prc, int source = QORE_SOURCE_SOCKET);
1577
1579
1589 DLLEXPORT AbstractQoreNode* readHTTPHeader(QoreHashNode* info, int timeout_ms, int* prc, int source = QORE_SOURCE_SOCKET);
1590
1592
1603 DLLEXPORT QoreHashNode* readHTTPHeader(ExceptionSink* xsink, QoreHashNode* info, int timeout_ms, int source = QORE_SOURCE_SOCKET);
1604
1606
1616 DLLEXPORT QoreStringNode* readHTTPHeaderString(ExceptionSink* xsink, int timeout_ms, int source = QORE_SOURCE_SOCKET);
1617
1619
1631 DLLEXPORT QoreHashNode* readHTTPChunkedBodyBinary(int timeout_ms, ExceptionSink* xsink, int source = QORE_SOURCE_SOCKET);
1632
1634
1646 DLLEXPORT QoreHashNode* readHTTPChunkedBody(int timeout_ms, ExceptionSink* xsink, int source = QORE_SOURCE_SOCKET);
1647
1649 DLLEXPORT int setSendTimeout(int ms);
1650
1652 DLLEXPORT int setRecvTimeout(int ms);
1653
1655 DLLEXPORT int getSendTimeout() const;
1656
1658 DLLEXPORT int getRecvTimeout() const;
1659
1661
1672 DLLEXPORT bool isDataAvailable(int timeout_ms = 0) const;
1673
1675
1689 DLLEXPORT bool isDataAvailable(ExceptionSink* xsink, int timeout_ms = 0) const;
1690
1692
1704 DLLEXPORT int asyncIoWait(int timeout_ms, bool read, bool write) const;
1705
1707
1711 DLLEXPORT int close();
1712
1714
1723 DLLEXPORT int shutdown();
1724
1726
1732 DLLEXPORT int shutdownSSL(ExceptionSink* xsink);
1733
1735
1737 DLLEXPORT int getSocket() const;
1738
1740
1742 DLLEXPORT const QoreEncoding *getEncoding() const;
1743
1745
1747 DLLEXPORT void setEncoding(const QoreEncoding *id);
1748
1750
1752 DLLEXPORT bool isOpen() const;
1753
1755
1757 DLLEXPORT const char* getSSLCipherName() const;
1758
1760
1762 DLLEXPORT const char* getSSLCipherVersion() const;
1763
1765
1767 DLLEXPORT bool isSecure() const;
1768
1770 DLLEXPORT long verifyPeerCertificate() const;
1771
1773
1782 DLLEXPORT int upgradeServerToSSL(ExceptionSink* xsink, int timeout_ms = -1, QoreSSLCertificate* cert = nullptr,
1783 QoreSSLPrivateKey* pkey = nullptr);
1784
1786
1795 DLLEXPORT int upgradeClientToSSL(ExceptionSink* xsink, int timeout_ms = -1, QoreSSLCertificate* cert = nullptr,
1796 QoreSSLPrivateKey* pkey = nullptr);
1797
1799
1808 DLLEXPORT bool isWriteFinished(int timeout_ms = 0) const;
1809
1811
1821 DLLEXPORT bool isWriteFinished(ExceptionSink* xsink, int timeout_ms = 0) const;
1822
1824
1836 DLLEXPORT QoreHashNode* getPeerInfo(ExceptionSink* xsink) const;
1837
1839
1853 DLLEXPORT QoreHashNode* getPeerInfo(ExceptionSink* xsink, bool host_lookup) const;
1854
1856
1869 DLLEXPORT QoreHashNode* getSocketInfo(ExceptionSink* xsink) const;
1870
1872
1886 DLLEXPORT QoreHashNode* getSocketInfo(ExceptionSink* xsink, bool host_lookup) const;
1887
1888 DLLEXPORT void clearWarningQueue(ExceptionSink* xsink);
1889 DLLEXPORT void setWarningQueue(ExceptionSink* xsink, int64 warning_ms, int64 warning_bs, Queue* wq, QoreValue arg, int64 min_ms = 1000);
1890 DLLEXPORT QoreHashNode* getUsageInfo() const;
1891 DLLEXPORT void clearStats();
1892
1894 DLLEXPORT void cleanup(ExceptionSink* xsink);
1895
1897 DLLEXPORT bool pendingHttpChunkedBody() const;
1898
1900
1906 DLLEXPORT void setSslVerifyMode(int mode);
1907
1909
1913 DLLEXPORT int getSslVerifyMode() const;
1914
1916
1920 DLLEXPORT void acceptAllCertificates(bool accept_all = true);
1921
1923
1927 DLLEXPORT bool getAcceptAllCertificates() const;
1928
1930
1938 DLLEXPORT bool captureRemoteCertificates(bool set);
1939
1941
1948
1950
1954 DLLEXPORT int64 getConnectionId() const;
1955
1956 DLLLOCAL static void doException(int rc, const char* meth, int timeout_ms, ExceptionSink* xsink);
1957
1959 DLLLOCAL void setEventQueue(ExceptionSink* xsink, Queue* q, QoreValue arg, bool with_data);
1960
1962 DLLLOCAL Queue* getQueue();
1963
1965 DLLLOCAL int64 getObjectIDForEvents() const;
1966
1967 DLLLOCAL int setNoDelay(int nodelay);
1968 DLLLOCAL int getNoDelay() const;
1969
1971 DLLLOCAL void setAccept(QoreObject* o);
1972
1973private:
1975 hashdecl qore_socket_private *priv;
1976
1978 DLLLOCAL QoreSocket(int n_sock, int n_sfamily, int n_stype, int s_prot, const QoreEncoding* csid);
1979
1980 DLLLOCAL static void convertHeaderToHash(QoreHashNode* h, char* p);
1981
1982 DLLLOCAL QoreSocket(const QoreSocket&) = delete;
1983 DLLLOCAL QoreSocket& operator=(const QoreSocket&) = delete;
1984};
1985
1986class QoreSocketTimeoutHelper {
1987protected:
1988 class PrivateQoreSocketTimeoutHelper* priv;
1989public:
1990 DLLEXPORT QoreSocketTimeoutHelper(QoreSocket& s, const char* op);
1991 DLLEXPORT ~QoreSocketTimeoutHelper();
1992};
1993
1994class QoreSocketThroughputHelper {
1995protected:
1996 class PrivateQoreSocketThroughputHelper* priv;
1997public:
1998 DLLEXPORT QoreSocketThroughputHelper(QoreSocket& s, bool snd);
1999 DLLEXPORT ~QoreSocketThroughputHelper();
2000 DLLEXPORT void finalize(int64 bytes);
2001};
2002
2003#endif // _QORE_QORESOCKET_H
The base class for all value and parse types in Qore expression trees.
Definition: AbstractQoreNode.h:57
holds arbitrary binary data
Definition: BinaryNode.h:41
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition: ExceptionSink.h:50
defines string encoding functions in Qore
Definition: QoreEncoding.h:83
provides thread-safe access to FTP servers through Qore data structures
Definition: QoreFtpClient.h:71
This is the hash or associative list container type in Qore, dynamically allocated only,...
Definition: QoreHashNode.h:51
the implementation of Qore's object data type, reference counted, dynamically-allocated only
Definition: QoreObject.h:61
represents an X509 certificate, reference-counted, dynamically-allocated only
Definition: QoreSSLCertificate.h:42
provides access to a private key data structure for SSL connections
Definition: QoreSSLPrivateKey.h:40
provides access to sockets using Qore data structures
Definition: QoreSocket.h:129
DLLEXPORT bool captureRemoteCertificates(bool set)
sets the capture SSL certificate flag
DLLEXPORT int send(int fd, qore_offset_t size, int timeout_ms, ExceptionSink *xsink)
sends untranslated data from an open file descriptor
DLLEXPORT int getRecvTimeout() const
get recv timeout in milliseconds
DLLEXPORT int recvi2LSB(int timeout_ms, short *val)
reads a 2-byte signed integer in LSB (Most Significant Byte first, little endian) format from the soc...
DLLEXPORT int send(const char *buf, size_t size)
sends binary data on a connected socket
DLLEXPORT int connectSSL(ExceptionSink *xsink, const char *name, int timeout_ms, QoreSSLCertificate *cert=nullptr, QoreSSLPrivateKey *pkey=nullptr)
connects to a socket, negotiates an SSL connection, and returns a status code, Qore-language exceptio...
DLLEXPORT QoreStringNode * recv(qore_offset_t bufsize, int timeout_ms, int *prc)
receive a certain number of bytes with a timeout value and return a QoreStringNode,...
DLLEXPORT int recvi8LSB(int timeout_ms, int64 *val)
reads an 8-byte signed integer in LSB (Most Significant Byte first, little endian) format from the so...
DLLEXPORT AbstractPollState * startRecvUntilBytes(ExceptionSink *xsink, const char *pattern, size_t size)
Starts a non-blocking receive operation on a connected socket.
DLLEXPORT int connectINET(const char *host, int prt, int timeout_ms, ExceptionSink *xsink=nullptr)
connects to an INET socket by hostname and port number and returns a status code, Qore-language excep...
DLLEXPORT void setSslVerifyMode(int mode)
sets the SSL verification mode
DLLEXPORT int64 recvu1(int timeout_ms, unsigned char *val, ExceptionSink *xsink)
reads a 1-byte unsigned integer from the socket with a timeout value and returns the value read as an...
DLLEXPORT int connectINET2SSL(ExceptionSink *xsink, const char *name, const char *service, int family, int sock_type, int protocol, int timeout_ms, QoreSSLCertificate *cert=nullptr, QoreSSLPrivateKey *pkey=nullptr)
connects to an INET or INET6 socket by hostname and port number or service name and returns a status ...
DLLEXPORT int send(const BinaryNode *msg, ExceptionSink *xsink)
sends binary data on a connected socket
DLLEXPORT QoreHashNode * getPeerInfo(ExceptionSink *xsink, bool host_lookup) const
returns peer information for a connected socket
DLLEXPORT void setEncoding(const QoreEncoding *id)
sets the character encoding for strings sent and received with this socket
DLLEXPORT int sendHTTPResponse(ExceptionSink *xsink, QoreHashNode *info, int code, const char *desc, const char *http_version, const QoreHashNode *headers, const void *data, size_t size, int source, int timeout_ms)
send an HTTP response message on the socket
DLLEXPORT int setSendTimeout(int ms)
set send timeout in milliseconds
DLLEXPORT AbstractPollState * startSend(ExceptionSink *xsink, const char *data, size_t size)
Starts a non-blocking send operation on a connected socket.
DLLEXPORT int sendHTTPMessage(QoreHashNode *info, const char *method, const char *path, const char *http_version, const QoreHashNode *headers, const void *data, size_t size, int source=QORE_SOURCE_SOCKET)
send an HTTP request message on the socket
DLLEXPORT bool pendingHttpChunkedBody() const
returns true if a HTTP header was read indicating chunked transfer encoding, but no chunked body has ...
DLLEXPORT bool isDataAvailable(ExceptionSink *xsink, int timeout_ms=0) const
returns true if data is available on the socket in the timeout period in milliseconds
DLLEXPORT bool getAcceptAllCertificates() const
returns the current value of the "accept all certificates" flag
DLLEXPORT int connectINET(const char *host, int prt, ExceptionSink *xsink=nullptr)
connects to an INET socket by hostname and port number and returns a status code, Qore-language excep...
DLLLOCAL Queue * getQueue()
returns the event queue (not part of the library's public API)
DLLEXPORT int close()
closes the socket
DLLEXPORT int recvu4(int timeout_ms, unsigned int *val)
reads a 4-byte unsigned integer in MSB (Most Significant Byte first, big endian, network) format from...
DLLEXPORT long verifyPeerCertificate() const
returns the peer certificate verification code if an SSL connection is in progress
DLLEXPORT int64 recvi2LSB(int timeout_ms, short *val, ExceptionSink *xsink)
reads a 2-byte signed integer in LSB (Most Significant Byte first, little endian) format from the soc...
DLLEXPORT QoreSocket()
creates an empty, unconnected socket
DLLEXPORT int asyncIoWait(int timeout_ms, bool read, bool write) const
returns 1 if the event was satisfied in the timeout period, 0 if not (= timeout), or -1 in case of an...
DLLEXPORT int sendHTTPMessageWithCallback(ExceptionSink *xsink, QoreHashNode *info, const char *method, const char *path, const char *http_version, const QoreHashNode *headers, const ResolvedCallReferenceNode &send_callback, int source, int timeout_ms)
send an HTTP request message on the socket with a timeout value with a chunked message body using a c...
DLLEXPORT int64 recvi8(int timeout_ms, int64 *val, ExceptionSink *xsink)
reads an 8-byte signed integer in MSB (Most Significant Byte first, big endian, network) format from ...
DLLEXPORT int getPort()
returns the TCP port number, also assigns the interal port number if it must be discovered
DLLEXPORT int acceptAndReplace(SocketSource *source)
accepts a new connection on a listening socket and replaces the current socket with the new connectio...
DLLEXPORT AbstractPollState * startRecv(ExceptionSink *xsink, size_t size)
Starts a non-blocking receive operation on a connected socket.
DLLEXPORT QoreSocket * accept(SocketSource *source, ExceptionSink *xsink)
accepts a new connection on a listening socket and returns a new QoreSocket object for the new connec...
DLLEXPORT int connectUNIXSSL(ExceptionSink *xsink, const char *p, QoreSSLCertificate *cert=nullptr, QoreSSLPrivateKey *pkey=nullptr)
connects to a UNIX domain socket, negotiates an SSL connection, and returns a status code,...
DLLEXPORT bool isSecure() const
returns true if an SSL connection is active
DLLLOCAL int64 getObjectIDForEvents() const
returns a unique ID for the socket to be used in event messages
DLLEXPORT int acceptAndReplace(int timeout_ms, ExceptionSink *xsink)
accepts a new connection on a listening socket and replaces the current socket with the new connectio...
DLLEXPORT int sendi2LSB(short i)
sends a 2-byte (16bit) binary integer in LSB (Least Significant Byte first, little endian) format thr...
DLLEXPORT int connect(const char *name, ExceptionSink *xsink=nullptr)
connects to a socket and returns a status code, Qore-language exceptions are raised in the case of an...
DLLEXPORT int send(const BinaryNode *msg)
sends binary data on a connected socket
DLLEXPORT void acceptAllCertificates(bool accept_all=true)
with peer verification enabled, all certificates are accepted regardless of the validity of the Certi...
DLLEXPORT QoreStringNode * recv(int timeout_ms, ExceptionSink *xsink)
receive with a timeout value and return a QoreStringNode, caller owns the reference count returned
DLLEXPORT int sendi1(char i)
sends a 1-byte binary integer data to a connected socket
DLLEXPORT int64 recvu4LSB(int timeout_ms, unsigned int *val, ExceptionSink *xsink)
reads a 4-byte unsigned integer in LSB (Most Significant Byte first, little endian) format from the s...
DLLEXPORT QoreSocket * acceptSSL(ExceptionSink *xsink, int timeout_ms, QoreSSLCertificate *cert=nullptr, QoreSSLPrivateKey *pkey=nullptr)
accepts a new connection on a listening socket, negotiates an SSL connection, and returns a new QoreS...
DLLEXPORT bool isDataAvailable(int timeout_ms=0) const
returns true if data is available on the socket in the timeout period in milliseconds
DLLEXPORT int sendi8LSB(int64 i, int timeout_ms, ExceptionSink *xsink)
sends an 8-byte (64bit) binary integer in LSB (Least Significant Byte first, little endian) format th...
DLLLOCAL void setEventQueue(ExceptionSink *xsink, Queue *q, QoreValue arg, bool with_data)
sets the event queue (not part of the library's pubilc API), must be already referenced before call
DLLEXPORT int64 recvi8LSB(int timeout_ms, int64 *val, ExceptionSink *xsink)
reads an 8-byte signed integer in LSB (Most Significant Byte first, little endian) format from the so...
DLLEXPORT bool isWriteFinished(int timeout_ms=0) const
returns true if all write data has been written within the timeout period in milliseconds
DLLEXPORT int sendHTTPMessage(ExceptionSink *xsink, QoreHashNode *info, const char *method, const char *path, const char *http_version, const QoreHashNode *headers, const void *data, size_t size, int source, int timeout_ms)
send an HTTP request message on the socket with a timeout value
DLLEXPORT int getSslVerifyMode() const
returns the SSL verification mode
DLLEXPORT int shutdownSSL(ExceptionSink *xsink)
shuts down an active SSL connection
DLLEXPORT int recvu2LSB(int timeout_ms, unsigned short *val)
reads a 2-byte unsigned integer in LSB (Most Significant Byte first, little endian) format from the s...
DLLEXPORT BinaryNode * recvBinary(int timeout_ms, ExceptionSink *xsink)
receive with a timeout value and return a BinaryNode, caller owns the reference count returned
DLLEXPORT const QoreEncoding * getEncoding() const
returns the character encoding associated with this socket
DLLEXPORT int recv(int fd, qore_offset_t size, int timeout_ms, ExceptionSink *xsink)
receive data on the socket and write it to a file descriptor
DLLEXPORT int upgradeServerToSSL(ExceptionSink *xsink, int timeout_ms=-1, QoreSSLCertificate *cert=nullptr, QoreSSLPrivateKey *pkey=nullptr)
negotiates an SSL connection from the client side
DLLEXPORT void cleanup(ExceptionSink *xsink)
posts deleted message and removes any event queue
DLLEXPORT QoreStringNode * recv(qore_offset_t bufsize, int timeout_ms, ExceptionSink *xsink)
receive a certain number of bytes with a timeout value and return a QoreStringNode,...
DLLEXPORT int send(const BinaryNode *msg, int timeout_ms, ExceptionSink *xsink)
sends binary data on a connected socket
DLLEXPORT int bind(const char *name, bool reuseaddr=false)
binds to a UNIX domain socket or INET interface:port using TCP and returns a status code
DLLEXPORT int recvi1(int timeout_ms, char *val)
reads a 1-byte signed integer from the socket with a timeout value and returns the value read as an o...
DLLEXPORT int bind(const hashdecl sockaddr *addr, int addr_size)
binds an INET TCP socket to a specific socket address - do not use, deprecated, use bind(int family,...
DLLEXPORT bool isWriteFinished(ExceptionSink *xsink, int timeout_ms=0) const
returns true if all write data has been written within the timeout period in milliseconds
DLLEXPORT int sendi8(int64 i)
sends an 8-byte (64bit) binary integer in MSB (Most Significant Byte first, big endian,...
DLLEXPORT QoreSocket * acceptSSL(ExceptionSink *xsink, SocketSource *source, QoreSSLCertificate *cert, QoreSSLPrivateKey *pkey)
accepts a new connection on a listening socket, negotiates an SSL connection, and returns a new QoreS...
DLLEXPORT QoreHashNode * getPeerInfo(ExceptionSink *xsink) const
returns peer information for a connected socket
DLLEXPORT QoreHashNode * readHTTPChunkedBody(int timeout_ms, ExceptionSink *xsink, int source=QORE_SOURCE_SOCKET)
receive a string message in HTTP chunked transfer encoding, caller owns QoreHashNode reference count ...
DLLEXPORT int getSocket() const
returns the file descriptor associated with this socket
DLLEXPORT int connectUNIX(const char *p, ExceptionSink *xsink=nullptr)
connects to a UNIX domain socket and returns a status code, Qore-language exceptions are raised in th...
DLLEXPORT BinaryNode * recvBinary(int timeout_ms, int *prc)
receive with a timeout value and return a BinaryNode, caller owns the reference count returned
DLLEXPORT int listen(int backlog)
sets an open socket to the listening state
DLLEXPORT AbstractQoreNode * readHTTPHeader(QoreHashNode *info, int timeout_ms, int *prc, int source=QORE_SOURCE_SOCKET)
read and parse HTTP header, caller owns AbstractQoreNode reference count returned
DLLLOCAL void setAccept(QoreObject *o)
sets backwards-compatible members on accept in a new object - will be removed in a future version of ...
DLLEXPORT QoreStringNode * recv(int timeout_ms, int *prc)
receive with a timeout value and return a QoreStringNode, caller owns the reference count returned
DLLEXPORT QoreStringNode * readHTTPHeaderString(ExceptionSink *xsink, int timeout_ms, int source=QORE_SOURCE_SOCKET)
read a HTTP header, caller owns QoreStringNode reference count returned
DLLEXPORT int connectINETSSL(ExceptionSink *xsink, const char *host, int prt, int timeout_ms, QoreSSLCertificate *cert=nullptr, QoreSSLPrivateKey *pkey=nullptr)
connects to an INET socket by hostname and port number, negotiates an SSL connection,...
DLLEXPORT int bind(const char *iface, int prt, bool reuseaddr=false)
binds to a TCP INET (ipv4 only) port on the given interface and returns a status code
DLLEXPORT int bindUNIX(const char *name, int socktype, int protocol=0, ExceptionSink *xsink=nullptr)
binds to a UNIX domain socket and returns a status code
DLLEXPORT int recvi4LSB(int timeout_ms, int *val)
reads a 4-byte signed integer in LSB (Most Significant Byte first, little endian) format from the soc...
DLLEXPORT int recvu2(int timeout_ms, unsigned short *val)
reads a 2-byte unsigned integer in MSB (Most Significant Byte first, big endian, network) format from...
DLLEXPORT QoreHashNode * getSocketInfo(ExceptionSink *xsink) const
returns information for the current socket; the socket must be open
DLLEXPORT int sendHTTPResponse(ExceptionSink *xsink, int code, const char *desc, const char *http_version, const QoreHashNode *headers, const void *data, size_t size, int source=QORE_SOURCE_SOCKET)
send an HTTP response message on the socket
DLLEXPORT bool isOpen() const
returns true if the socket is open
DLLEXPORT int connectINET2(const char *name, const char *service, int family=Q_AF_UNSPEC, int sock_type=Q_SOCK_STREAM, int protocol=0, int timeout_ms=-1, ExceptionSink *xsink=nullptr)
connects to an INET or INET6 socket by hostname and port number or service name and returns a status ...
DLLEXPORT int recv(int fd, qore_offset_t size, int timeout_ms)
receive data on the socket and write it to a file descriptor
DLLEXPORT int sendi4(int i, int timeout_ms, ExceptionSink *xsink)
sends a 4-byte (32bit) binary integer in MSB (Most Significant Byte first, big endian,...
DLLEXPORT int64 recvi1(int timeout_ms, char *val, ExceptionSink *xsink)
reads a 1-byte signed integer from the socket with a timeout value and returns the value read as an o...
DLLEXPORT int sendi4(int i)
sends a 4-byte (32bit) binary integer in MSB (Most Significant Byte first, big endian,...
DLLEXPORT int send(const char *buf, size_t size, int timeout_ms, ExceptionSink *xsink)
sends binary data on a connected socket
DLLEXPORT int connectINETSSL(ExceptionSink *xsink, const char *host, int prt, QoreSSLCertificate *cert=nullptr, QoreSSLPrivateKey *pkey=nullptr)
connects to an INET socket by hostname and port number, negotiates an SSL connection,...
DLLEXPORT int sendHTTPMessage(const char *method, const char *path, const char *http_version, const QoreHashNode *headers, const void *data, size_t size, int source=QORE_SOURCE_SOCKET)
send an HTTP request message on the socket
DLLEXPORT int sendi2(short i, int timeout_ms, ExceptionSink *xsink)
sends a 2-byte (16bit) binary integer in MSB (Most Significant Byte first, big endian,...
DLLEXPORT AbstractPollState * startSslConnect(ExceptionSink *xsink, QoreSSLCertificate *cert=nullptr, QoreSSLPrivateKey *pkey=nullptr)
Starts a non-blocking upgrade to an SSL connection on a connected client connection.
DLLEXPORT int connectUNIXSSL(ExceptionSink *xsink, const char *p, int socktype, int protocol, QoreSSLCertificate *cert=nullptr, QoreSSLPrivateKey *pkey=nullptr)
connects to a UNIX domain socket, negotiates an SSL connection, and returns a status code,...
DLLEXPORT int recvi8(int timeout_ms, int64 *val)
reads an 8-byte signed integer in MSB (Most Significant Byte first, big endian, network) format from ...
DLLEXPORT const char * getSSLCipherName() const
returns the name of the SSL Cipher for the currently-connected control connection,...
DLLEXPORT QoreSocket * accept(int timeout_ms, ExceptionSink *xsink)
accepts a new connection on a listening socket and returns a new QoreSocket object for the new connec...
DLLEXPORT int connectUNIX(const char *p, int socktype, int protocol=0, ExceptionSink *xsink=nullptr)
connects to a UNIX domain socket and returns a status code, Qore-language exceptions are raised in th...
DLLEXPORT int send(int fd, qore_offset_t size=-1)
sends untranslated data from an open file descriptor
DLLEXPORT int recvu4LSB(int timeout_ms, unsigned int *val)
reads a 4-byte unsigned integer in LSB (Most Significant Byte first, little endian) format from the s...
DLLEXPORT int send(const QoreString *msg, ExceptionSink *xsink)
sends string data on a connected socket, converts the string encoding to the socket's encoding if nec...
DLLEXPORT int64 recvi2(int timeout_ms, short *val, ExceptionSink *xsink)
reads a 2-byte signed integer in MSB (Most Significant Byte first, big endian, network) format from t...
DLLEXPORT int upgradeClientToSSL(ExceptionSink *xsink, int timeout_ms=-1, QoreSSLCertificate *cert=nullptr, QoreSSLPrivateKey *pkey=nullptr)
negotiates an SSL connection from the client side
DLLEXPORT int send(const QoreString *msg, int timeout_ms, ExceptionSink *xsink)
sends string data on a connected socket, converts the string encoding to the socket's encoding if nec...
DLLEXPORT int64 recvu2(int timeout_ms, unsigned short *val, ExceptionSink *xsink)
reads a 2-byte unsigned integer in MSB (Most Significant Byte first, big endian, network) format from...
DLLEXPORT int recvu1(int timeout_ms, unsigned char *val)
reads a 1-byte unsigned integer from the socket with a timeout value and returns the value read as an...
DLLEXPORT int listen()
sets an open socket to the listening state
DLLEXPORT int recvi4(int timeout_ms, int *val)
reads a 4-byte signed integer in MSB (Most Significant Byte first, big endian, network) format from t...
DLLEXPORT AbstractQoreNode * readHTTPHeader(int timeout_ms, int *prc, int source=QORE_SOURCE_SOCKET)
read and parse HTTP header, caller owns AbstractQoreNode reference count returned
DLLEXPORT AbstractPollState * startConnect(ExceptionSink *xsink, const char *name)
Starts a non-blocking connection to a socket and returns a status code.
DLLEXPORT int bindINET(const char *name, const char *service, bool reuseaddr=true, int family=Q_AF_UNSPEC, int socktype=Q_SOCK_STREAM, int protocol=0, ExceptionSink *xsink=nullptr)
binds an INET or INET6 TCP socket to a specific socket address
DLLEXPORT int setRecvTimeout(int ms)
set recv timeout in milliseconds
DLLEXPORT int sendi8(int64 i, int timeout_ms, ExceptionSink *xsink)
sends an 8-byte (64bit) binary integer in MSB (Most Significant Byte first, big endian,...
DLLEXPORT const char * getSSLCipherVersion() const
returns the version string of the SSL Cipher for the currently-connected control connection,...
DLLEXPORT int getSendTimeout() const
get send timeout in milliseconds
DLLEXPORT BinaryNode * recvBinary(qore_offset_t bufsize, int timeout_ms, ExceptionSink *xsink)
receive a certain number of bytes with a timeout value and return a BinaryNode, caller owns the refer...
DLLEXPORT int bind(int prt, bool reuseaddr)
binds to a TCP INET (ipv4 only) port on all interfaces and returns a status code
DLLEXPORT int sendHTTPResponse(ExceptionSink *xsink, int code, const char *desc, const char *http_version, const QoreHashNode *headers, const void *data, size_t size, int source, int timeout_ms)
send an HTTP response message on the socket
DLLEXPORT int64 recvu4(int timeout_ms, unsigned int *val, ExceptionSink *xsink)
reads a 4-byte unsigned integer in MSB (Most Significant Byte first, big endian, network) format from...
DLLEXPORT int send(const QoreStringNode &msg, int timeout_ms, ExceptionSink *xsink)
sends string data on a connected socket, converts the string encoding to the socket's encoding if nec...
DLLEXPORT int sendHTTPResponse(int code, const char *desc, const char *http_version, const QoreHashNode *headers, const void *data, size_t size, int source=QORE_SOURCE_SOCKET)
send an HTTP response message on the socket
DLLEXPORT QoreHashNode * readHTTPHeader(ExceptionSink *xsink, QoreHashNode *info, int timeout_ms, int source=QORE_SOURCE_SOCKET)
read and parse HTTP header, caller owns QoreHashNode reference count returned
DLLEXPORT int sendi4LSB(int i, int timeout_ms, ExceptionSink *xsink)
sends a 4-byte (32bit) binary integer in LSB (Least Significant Byte first, little endian) format thr...
DLLEXPORT int sendHTTPMessage(ExceptionSink *xsink, QoreHashNode *info, const char *method, const char *path, const char *http_version, const QoreHashNode *headers, const void *data, size_t size, int source=QORE_SOURCE_SOCKET)
send an HTTP request message on the socket
DLLEXPORT int sendi1(char i, int timeout_ms, ExceptionSink *xsink)
sends a 1-byte binary integer data to a connected socket
DLLEXPORT int64 recvu2LSB(int timeout_ms, unsigned short *val, ExceptionSink *xsink)
reads a 2-byte unsigned integer in LSB (Most Significant Byte first, little endian) format from the s...
DLLEXPORT ~QoreSocket()
disconnects if necessary, frees all data, and destroys the socket
DLLEXPORT QoreObject * getRemoteCertificate() const
returns a remote certificate if available
DLLEXPORT int sendi2(short i)
sends a 2-byte (16bit) binary integer in MSB (Most Significant Byte first, big endian,...
DLLEXPORT int64 getConnectionId() const
returns a connection ID to help identifying when new connections are made
DLLEXPORT int bindUNIX(const char *name, ExceptionSink *xsink=nullptr)
binds to a UNIX domain socket and returns a status code
DLLEXPORT int connectSSL(ExceptionSink *xsink, const char *name, QoreSSLCertificate *cert=nullptr, QoreSSLPrivateKey *pkey=nullptr)
connects to a socket, negotiates an SSL connection, and returns a status code, Qore-language exceptio...
DLLEXPORT BinaryNode * recvBinary(qore_offset_t bufsize, int timeout_ms, int *prc)
receive a certain number of bytes with a timeout value and return a BinaryNode, caller owns the refer...
DLLEXPORT int bind(int family, const hashdecl sockaddr *addr, int addr_size, int socktype=Q_SOCK_STREAM, int protocol=0)
binds an INET or INET6 TCP socket to a specific socket address
DLLEXPORT int sendi4LSB(int i)
sends a 4-byte (32bit) binary integer in LSB (Least Significant Byte first, little endian) format thr...
DLLEXPORT int shutdown()
calls shutdown on the socket
DLLEXPORT int sendi8LSB(int64 i)
sends an 8-byte (64bit) binary integer in LSB (Least Significant Byte first, little endian) format th...
DLLEXPORT int64 recvi4LSB(int timeout_ms, int *val, ExceptionSink *xsink)
reads a 4-byte signed integer in LSB (Most Significant Byte first, little endian) format from the soc...
DLLEXPORT int64 recvi4(int timeout_ms, int *val, ExceptionSink *xsink)
reads a 4-byte signed integer in MSB (Most Significant Byte first, big endian, network) format from t...
DLLEXPORT QoreHashNode * getSocketInfo(ExceptionSink *xsink, bool host_lookup) const
returns information for the current socket; the socket must be open
DLLEXPORT int send(const char *buf, size_t size, ExceptionSink *xsink)
sends binary data on a connected socket
DLLEXPORT int sendi2LSB(short i, int timeout_ms, ExceptionSink *xsink)
sends a 2-byte (16bit) binary integer in LSB (Least Significant Byte first, little endian) format thr...
DLLEXPORT QoreHashNode * readHTTPChunkedBodyBinary(int timeout_ms, ExceptionSink *xsink, int source=QORE_SOURCE_SOCKET)
receive a binary message in HTTP chunked transfer encoding, caller owns QoreHashNode reference count ...
DLLEXPORT int connect(const char *name, int timeout_ms, ExceptionSink *xsink=nullptr)
connects to a socket and returns a status code, Qore-language exceptions are raised in the case of an...
DLLEXPORT int recvi2(int timeout_ms, short *val)
reads a 2-byte signed integer in MSB (Most Significant Byte first, big endian, network) format from t...
Qore's string type supported by the QoreEncoding class.
Definition: QoreString.h:93
Qore's string value type, reference counted, dynamically-allocated only.
Definition: QoreStringNode.h:50
base class for resolved call references
Definition: CallReferenceNode.h:109
a helper class for getting socket origination information
Definition: QoreSocket.h:76
DLLEXPORT const char * getAddress() const
returns the host address string as a C string
DLLEXPORT ~SocketSource()
destroys the object and frees all memory
DLLEXPORT SocketSource()
creates an empty object
DLLEXPORT const char * getHostName() const
returns the hostname string as a C string
DLLEXPORT QoreStringNode * takeHostName()
returns the hostname string field and leaves the object's hostname field empty; the caller owns the Q...
DLLEXPORT QoreStringNode * takeAddress()
returns the host address string field and leaves the object's host address field empty; the caller ow...
#define Q_AF_UNSPEC
cross-platform define for AF_UNSPEC
Definition: common.h:58
#define Q_SOCK_STREAM
platform-independent define for SOCK_STREAM
Definition: common.h:67
intptr_t qore_offset_t
used for offsets that could be negative
Definition: common.h:76
long long int64
64bit integer type, cannot use int64_t here since it breaks the API on some 64-bit systems due to equ...
Definition: common.h:260
The main value class in Qore, designed to be passed by value.
Definition: QoreValue.h:279