Qore Programming Language Reference Manual  1.12.0
QC_Socket.dox.h
1 namespace Qore {
4 
6 struct SocketPollInfo {
8 
10  int events;
13 };
14 }
15 
17 namespace Qore {
19 class Socket : public AbstractPollableIoObjectBase {
153 
154 public:
156 
172 
173 public:
175 
191 *Socket accept(timeout timeout_ms);
192 
193 public:
195 
211  acceptAllCertificates(bool accept_all = True);
212 
213 public:
215 
233 
234 public:
236 
252 *Socket acceptSSL(timeout timeout_ms);
253 
254 public:
256 
276 int bind(string str, softbool reuseaddr = False);
277 
278 public:
280 
294 int bind(int port, softbool reuseaddr = False);
295 
296 public:
298 
326 nothing bindINET(*string iface, *softstring service, softbool reuseaddr = False, softint family = AF_UNSPEC, softint socktype = SOCK_STREAM, softint protocol = 0);
327 
328 public:
330 
346 nothing bindUNIX(string path, softint socktype = SOCK_STREAM, softint protocol = 0);
347 
348 public:
350 
364 
365 public:
367 
377 
378 public:
380 
390 
391 public:
393 
406 int close();
407 
408 public:
410 
448 nothing connect(string target, timeout timeout_ms = -1);
449 
450 public:
452 
476 nothing connectINET(string host, softstring service, timeout timeout_ms = -1, softint family = AF_UNSPEC, softint socktype = SOCK_STREAM, softint protocol = 0);
477 
478 public:
480 
505 nothing connectINETSSL(string host, softstring service, timeout timeout_ms = -1, softint family = AF_UNSPEC, softint socktype = SOCK_STREAM, softint protocol = 0);
506 
507 public:
509 
537 nothing connectSSL(string target, timeout timeout_ms = -1);
538 
539 public:
541 
560 nothing connectUNIX(string path, softint socktype = SOCK_STREAM, softint protocol = 0);
561 
562 public:
564 
584 nothing connectUNIXSSL(string path, softint socktype = SOCK_STREAM, softint protocol = 0);
585 
586 public:
588 
592 
593 public:
595 
598  copy();
599 
600 public:
602 /***/
604 
605 public:
607 
625 
626 public:
628 
634 string getCharset();
635 
636 public:
638 
653 
654 public:
656 
661 string getEncoding();
662 
663 public:
665 
677 bool getNoDelay();
678 
679 public:
681 
697 hash<auto> getPeerInfo(bool host_lookup = True);
698 
699 public:
701 
711 int getPort();
712 
713 public:
715 
726 
727 public:
729 
741 
742 public:
744 
756 
757 public:
759 
771 
772 public:
774 
785 
786 public:
788 
798 int getSocket();
799 
800 public:
802 
818 hash<auto> getSocketInfo(bool host_lookup = True);
819 
820 public:
822 
840 
841 public:
843 
864 hash<auto> getUsageInfo();
865 
866 public:
868 
886 bool isDataAvailable(timeout timeout_ms = 0);
887 
888 public:
890 
900 bool isOpen();
901 
902 public:
904 
914 bool isSecure();
915 
916 public:
918 
935 bool isWriteFinished(timeout timeout_ms = 0);
936 
937 public:
939 
952 int listen(int backlog = 20);
953 
954 public:
956 
964 
965 public:
967 
988 hash<auto> readHTTPChunkedBody(timeout timeout_ms = -1);
989 
990 public:
992 
1013 hash<auto> readHTTPChunkedBodyBinary(timeout timeout_ms = -1);
1014 
1015 public:
1017 
1045  readHTTPChunkedBodyBinaryWithCallback(code rcb, timeout timeout_ms = -1);
1046 
1047 public:
1049 
1071 hash<auto> readHTTPChunkedBodyToOutputStream(Qore::OutputStream os, timeout timeout_ms = -1);
1072 
1073 public:
1075 
1103  readHTTPChunkedBodyWithCallback(code rcb, timeout timeout_ms = -1);
1104 
1105 public:
1107 
1154 hash<auto> readHTTPHeader(timeout timeout_ms = -1, *reference<hash<auto>> info);
1155 
1156 public:
1158 
1181 string readHTTPHeaderString(timeout timeout_ms = -1);
1182 
1183 public:
1185 
1210 string recv(softint size = 0, timeout timeout_ms = -1);
1211 
1212 public:
1214 
1237 binary recvBinary(softint size = 0, timeout timeout_ms = -1);
1238 
1239 public:
1241 
1264 nothing recvToOutputStream(Qore::OutputStream os, softint size = -1, timeout timeout_ms = -1);
1265 
1266 public:
1268 
1290 int recvi1(timeout timeout_ms = -1);
1291 
1292 public:
1294 
1316 int recvi2(timeout timeout_ms = -1);
1317 
1318 public:
1320 
1342 int recvi2LSB(timeout timeout_ms = -1);
1343 
1344 public:
1346 
1373 int recvi4(timeout timeout_ms = -1);
1374 
1375 public:
1377 
1399 int recvi4LSB(timeout timeout_ms = -1);
1400 
1401 public:
1403 
1425 int recvi8(timeout timeout_ms = -1);
1426 
1427 public:
1429 
1451 int recvi8LSB(timeout timeout_ms = -1);
1452 
1453 public:
1455 
1477 int recvu1(timeout timeout_ms = -1);
1478 
1479 public:
1481 
1503 int recvu2(timeout timeout_ms = -1);
1504 
1505 public:
1507 
1529 int recvu2LSB(timeout timeout_ms = -1);
1530 
1531 public:
1533 
1555 int recvu4(timeout timeout_ms = -1);
1556 
1557 public:
1559 
1581 int recvu4LSB(timeout timeout_ms = -1);
1582 
1583 public:
1585 
1611 int send(binary bin, timeout timeout_ms = -1);
1612 
1613 public:
1615 
1643 int send(string str, timeout timeout_ms = -1);
1644 
1645 public:
1647 
1670 nothing send2(binary bin, timeout timeout_ms = -1);
1671 
1672 public:
1674 
1699 nothing send2(string str, timeout timeout_ms = -1);
1700 
1701 public:
1703 
1728 int sendBinary(string str, timeout timeout_ms = -1);
1729 
1730 public:
1732 
1757 int sendBinary(binary bin, timeout timeout_ms = -1);
1758 
1759 public:
1761 
1783 nothing sendBinary2(string str, timeout timeout_ms = -1);
1784 
1785 public:
1787 
1809 nothing sendBinary2(binary bin, timeout timeout_ms = -1);
1810 
1811 public:
1813 
1834 nothing sendFromInputStream(Qore::InputStream input_stream, softint size = -1, timeout timeout_ms = -1);
1835 
1836 public:
1838 
1869 nothing sendHTTPChunkedBodyFromInputStream(Qore::InputStream input_stream, int max_chunk_size = 4096, timeout timeout_ms = -1, *code tcb);
1870 
1871 public:
1873 
1896 nothing sendHTTPChunkedBodyTrailer(*hash<auto> trailer, timeout timeout_ms = -1);
1897 
1898 public:
1900 
1935 nothing sendHTTPMessage(string method, string path, string http_version, hash<auto> headers, string body, *reference<hash> info, timeout timeout_ms = -1);
1936 
1937 public:
1939 
1971 nothing sendHTTPMessage(string method, string path, string http_version, hash<auto> headers, *binary body, *reference<hash<auto>> info, timeout timeout_ms = -1);
1972 
1973 public:
1975 
2003 nothing sendHTTPMessageWithCallback(code scb, string method, string path, string http_version, hash<auto> headers, *reference<hash<auto>> info, timeout timeout_ms = -1);
2004 
2005 public:
2007 
2031 nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash<auto> headers, string body, timeout timeout_ms = -1);
2032 
2033 public:
2035 
2073 nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash<auto> headers, string body, *reference<hash<auto>> info, timeout timeout_ms = -1);
2074 
2075 public:
2077 
2106 nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash<auto> headers, *binary body, timeout timeout_ms = -1);
2107 
2108 public:
2110 
2144 nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash<auto> headers, *binary body, *reference<hash<auto>> info, timeout timeout_ms = -1);
2145 
2146 public:
2148 
2190 nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash<auto> headers, Qore::InputStream input_stream, int max_chunk_size = 4096, *reference<hash<auto>> info, timeout timeout_ms = -1, *code tcb);
2191 
2192 public:
2194 
2229 nothing sendHTTPResponseWithCallback(code scb, softint status_code, string status_desc, string http_version, hash<auto> headers, timeout timeout_ms = -1);
2230 
2231 public:
2233 
2271 nothing sendHTTPResponseWithCallback(code scb, softint status_code, string status_desc, string http_version, hash<auto> headers, *reference<hash<auto>> info, timeout timeout_ms = -1);
2272 
2273 public:
2275 
2298 int sendi1(softint i = 0, timeout timeout_ms = -1);
2299 
2300 public:
2302 
2325 int sendi2(softint i = 0, timeout timeout_ms = -1);
2326 
2327 public:
2329 
2352 int sendi2LSB(softint i = 0, timeout timeout_ms = -1);
2353 
2354 public:
2356 
2379 int sendi4(softint i = 0, timeout timeout_ms = -1);
2380 
2381 public:
2383 
2406 int sendi4LSB(softint i = 0, timeout timeout_ms = -1);
2407 
2408 public:
2410 
2433 int sendi8(softint i = 0, timeout timeout_ms = -1);
2434 
2435 public:
2437 
2460 int sendi8LSB(softint i = 0, timeout timeout_ms = -1);
2461 
2462 public:
2464 
2472 
2473 public:
2475 
2482 nothing setCertificate(string cert_pem);
2483 
2484 public:
2486 
2493 nothing setCertificate(binary cert_der);
2494 
2495 public:
2497 
2508 
2509 public:
2511 
2514 nothing setCharset(string encoding);
2515 
2516 public:
2518 
2520 nothing setEncoding(string encoding);
2521 
2522 public:
2524 
2531 nothing setEventQueue();
2532 
2533 public:
2535 
2551 nothing setEventQueue(Qore::Thread::Queue queue, auto arg, *bool with_data);
2552 
2553 public:
2555 
2573 int setNoDelay(bool nd = True);
2574 
2575 public:
2577 
2585 
2586 public:
2588 
2596 nothing setPrivateKey(string key_pem, *string pass);
2597 
2598 public:
2600 
2607 nothing setPrivateKey(binary key_der);
2608 
2609 public:
2611 
2625 int setRecvTimeout(timeout timeout_ms);
2626 
2627 public:
2629 
2641 int setSendTimeout(timeout timeout_ms);
2642 
2643 public:
2645 
2662  setSslVerifyMode(int mode);
2663 
2664 public:
2666 
2698 nothing setWarningQueue(int warning_ms, int warning_bs, Queue queue, auto arg, timeout min_ms = 1s);
2699 
2700 public:
2702 
2712 int shutdown();
2713 
2714 public:
2716 
2725 nothing shutdownSSL();
2726 
2727 public:
2729 
2737 
2738 public:
2740 
2750 
2751 public:
2753 
2763 
2764 public:
2766 
2776 
2777 public:
2779 
2789 
2790 public:
2792 
2802 
2803 public:
2805 
2812 
2813 public:
2815 
2822 
2823 public:
2825 
2834 
2835 public:
2837 
2851 nothing upgradeClientToSSL(timeout timeout_ms = -1);
2852 
2853 public:
2855 
2869 nothing upgradeServerToSSL(timeout timeout_ms = -1);
2870 
2871 public:
2873 
2884 
2885 public:
2887 
2918 static list<hash<SocketPollInfo>> poll(list<hash<SocketPollInfo>> items, timeout timeout_ms);
2919 };
2922 
2935 
2938 
2950 
2962 
2971 
2994 
2997  const X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH = "X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH";
2999  const X509_V_ERR_AKID_SKID_MISMATCH = "X509_V_ERR_AKID_SKID_MISMATCH";
3001  const X509_V_ERR_APPLICATION_VERIFICATION = "X509_V_ERR_APPLICATION_VERIFICATION";
3003  const X509_V_ERR_CERT_CHAIN_TOO_LONG = "X509_V_ERR_CERT_CHAIN_TOO_LONG";
3005  const X509_V_ERR_CERT_HAS_EXPIRED = "X509_V_ERR_CERT_HAS_EXPIRED";
3007  const X509_V_ERR_CERT_NOT_YET_VALID = "X509_V_ERR_CERT_NOT_YET_VALID";
3009  const X509_V_ERR_CERT_REJECTED = "X509_V_ERR_CERT_REJECTED";
3011  const X509_V_ERR_CERT_REVOKED = "X509_V_ERR_CERT_REVOKED";
3013  const X509_V_ERR_CERT_SIGNATURE_FAILURE = "X509_V_ERR_CERT_SIGNATURE_FAILURE";
3015  const X509_V_ERR_CERT_UNTRUSTED = "X509_V_ERR_CERT_UNTRUSTED";
3017  const X509_V_ERR_CRL_HAS_EXPIRED = "X509_V_ERR_CRL_HAS_EXPIRED";
3019  const X509_V_ERR_CRL_NOT_YET_VALID = "X509_V_ERR_CRL_NOT_YET_VALID";
3021  const X509_V_ERR_CRL_SIGNATURE_FAILURE = "X509_V_ERR_CRL_SIGNATURE_FAILURE";
3023  const X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT = "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT";
3025  const X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD = "X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD";
3027  const X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD = "X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD";
3029  const X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD = "X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD";
3031  const X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = "X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD";
3033  const X509_V_ERR_INVALID_CA = "X509_V_ERR_INVALID_CA";
3035  const X509_V_ERR_INVALID_PURPOSE = "X509_V_ERR_INVALID_PURPOSE";
3037  const X509_V_ERR_KEYUSAGE_NO_CERTSIGN = "X509_V_ERR_KEYUSAGE_NO_CERTSIGN";
3039  const X509_V_ERR_OUT_OF_MEM = "X509_V_ERR_OUT_OF_MEM";
3041  const X509_V_ERR_PATH_LENGTH_EXCEEDED = "X509_V_ERR_PATH_LENGTH_EXCEEDED";
3043  const X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN = "X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN";
3045  const X509_V_ERR_SUBJECT_ISSUER_MISMATCH = "X509_V_ERR_SUBJECT_ISSUER_MISMATCH";
3047  const X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY = "X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY";
3049  const X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE = "X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE";
3051  const X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE = "X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE";
3053  const X509_V_ERR_UNABLE_TO_GET_CRL = "X509_V_ERR_UNABLE_TO_GET_CRL";
3055  const X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT";
3057  const X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY";
3059  const X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE = "X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE";
3061  const X509_V_OK = "X509_V_OK";
3064  "X509_V_OK": "OK",
3065  "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT": "Unable to get issuer certificate",
3066  "X509_V_ERR_UNABLE_TO_GET_CRL": "Unable to get certificate CRL",
3067  "X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE": "Unable to decrypt certificate's signature. This means that the actual signature value could not be determined rather than it not matching the expected value; this is only meaningful for RSA",
3068  "X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE": "Unable to decrypt CRL's signature",
3069  "X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY": "Unable to decode issuer public key (SubjectPublicKeyInfo)",
3070  "X509_V_ERR_CERT_SIGNATURE_FAILURE": "Certificate signature failure; the signature of the certificate is invalid",
3071  "X509_V_ERR_CRL_SIGNATURE_FAILURE": "CRL signature failure; the signature of the certificate is invalid",
3072  "X509_V_ERR_CERT_NOT_YET_VALID": "Certificate is not yet valid",
3073  "X509_V_ERR_CERT_HAS_EXPIRED": "Certificate has expired",
3074  "X509_V_ERR_CRL_NOT_YET_VALID": "CRL is not yet valid",
3075  "X509_V_ERR_CRL_HAS_EXPIRED": "CRL has expired",
3076  "X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD": "Format error in certificate's notBefore field (invalid time)",
3077  "X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD": "Format error in certificate's notAfter field (invalid time)",
3078  "X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD": "Format error in CRL's lastUpdate field (invalid time)",
3079  "X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD": "Format error in CRL's nextUpdate field (invalid time)",
3080  "X509_V_ERR_OUT_OF_MEM": "Out of memory error",
3081  "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT": "Certificate is self-signed and cannot be found in the trusted list",
3082  "X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN": "Self signed certificate in certificate chain",
3083  "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY": "Unable to get local issuer certificate. This normally means the list of trusted certificates is not complete",
3084  "X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE": "Unable to verify the first certificate",
3085  "X509_V_ERR_CERT_CHAIN_TOO_LONG": "Certificate chain too long",
3086  "X509_V_ERR_CERT_REVOKED": "Certificate has been revoked",
3087  "X509_V_ERR_INVALID_CA": "Invalid CA certificate",
3088  "X509_V_ERR_PATH_LENGTH_EXCEEDED": "The basicConstraints pathlength parameter has been exceeded",
3089  "X509_V_ERR_INVALID_PURPOSE": "The certificate cannot be used for the specified purpose",
3090  "X509_V_ERR_CERT_UNTRUSTED": "Root CA is not marked as trusted for the specified purpose",
3091  "X509_V_ERR_CERT_REJECTED": "Root CA is marked to reject the specified purpose",
3092  "X509_V_ERR_SUBJECT_ISSUER_MISMATCH": "The current candidate issuer certificate was rejected because its subject name did not match the issuer name of the current certificate",
3093  "X509_V_ERR_AKID_SKID_MISMATCH": "The current candidate issuer certificate was rejected because its subject key identifier was present and did not match the authority key identifier of the current certificate",
3094  "X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH": "Issuer name and serial number of candidate certificate do not match the authority key identifier of the current certificate",
3095  "X509_V_ERR_KEYUSAGE_NO_CERTSIGN": "The keyUsage extension does not permit certificate signing",
3096  "X509_V_ERR_APPLICATION_VERIFICATION": "Verification failure",
3097 );
3102 
3105  const AFMap = qore(get_network_address_family_map());
3107  const AFStrMap = (
3108  "AF_INET": AF_INET,
3109  "AF_INET6": AF_INET6,
3110  "AF_UNIX": AF_UNIX,
3111  "AF_LOCAL": AF_UNIX,
3112  "AF_UNSPEC": AF_UNSPEC,
3113 );
3115  const AF_INET = AF_INET;
3121  const AF_UNIX = AF_UNIX;
3129 
3134  const AI_ALL = AI_ALL;
3140 
3145 
3153 
3160 
3170 
3179 }
Abstract poll operation objects provide the polling interface for pollable objects.
Definition: QC_AbstractPollOperation.dox.h:6
This interfaces declares that the inheriting class supports a pollable file descriptor.
Definition: QC_AbstractPollableIoObject.dox.h:6
This class defines an abstract interface for input streams.
Definition: QC_InputStream.dox.h:19
This class defines an abstract interface for output streams.
Definition: QC_OutputStream.dox.h:18
SSLCertificate objects allow Qore code to work with X.509 certificate data.
Definition: QC_SSLCertificate.dox.h:10
This class implements a container for private key data.
Definition: QC_SSLPrivateKey.dox.h:10
The Socket class allows Qore programs safe access to network sockets.
Definition: QC_Socket.dox.h:152
int sendi2LSB(softint i=0, timeout timeout_ms=-1)
Sends a 2-byte (16-bit) integer in little-endian format over the socket.
nothing send2(string str, timeout timeout_ms=-1)
Sends string data over the socket; string data is converted to the socket's encoding if necessary; if...
int getSendTimeout()
Returns the send timeout socket option value as an integer in milliseconds.
int sendBinary(binary bin, timeout timeout_ms=-1)
Sends binary data over the socket; if any errors occur, an exception is thrown.
bool getAcceptAllCertificates()
returns the current value of the "accept all certificates" flag
int sendi1(softint i=0, timeout timeout_ms=-1)
Sends a 1-byte integer over the socket.
int sendi8LSB(softint i=0, timeout timeout_ms=-1)
Sends an 8-byte (64-bit) integer in little-endian format over the socket.
bool pendingHttpChunkedBody()
returns True if the socket is still connected, and a HTTP header was read indicating chunked transfer...
bool captureRemoteCertificates(bool set=True)
Sets the flag for capturing remote X.509 certificates; by default no capture of remote certificates i...
bool isOpen()
Returns True if the socket is open.
hash< auto > readHTTPHeader(timeout timeout_ms=-1, *reference< hash< auto >> info)
Retuns a hash representing the data in the HTTP header read, or, if the data cannot be parsed as an H...
int recvu2(timeout timeout_ms=-1)
Receives a 2-byte (16-bit) unsigned integer in big-endian format (network byte order) from the socket...
int getSocket()
Returns the socket file descriptor number.
AbstractPollOperation startPollConnectSsl(string target)
Returns an AbstractPollOperation object to poll the socket for an SSL connection.
nothing sendHTTPMessageWithCallback(code scb, string method, string path, string http_version, hash< auto > headers, *reference< hash< auto >> info, timeout timeout_ms=-1)
Sends an HTTP message with a method and user-defined headers given as a hash and an optional message ...
hash< auto > getUsageInfo()
Returns performance statistics for the socket.
int setRecvTimeout(timeout timeout_ms)
sets the receive timeout as a socket option
hash< auto > getSocketInfo(bool host_lookup=True)
Returns information about the local socket as a hash.
Socket accept()
Accepts connections on a listening socket.
bool getNoDelay()
Returns the TCP_NODELAY setting for the socket.
nothing connectSSL(string target, timeout timeout_ms=-1)
Connects to a remote socket and attempts to establish a TLS/SSL connection; accepts an optional timeo...
nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash< auto > headers, string body, timeout timeout_ms=-1)
Sends an HTTP response with user-defined headers given as a hash and an optional message body.
nothing setCertificate(binary cert_der)
Sets the X.509 certificate to use for negotiating encrypted connections from the DER-encoded binary o...
nothing sendFromInputStream(Qore::InputStream input_stream, softint size=-1, timeout timeout_ms=-1)
Reads data from an InputStream and sends the bytes over the socket.
int close()
Closes an open socket.
AbstractPollOperation startPollRecvBinary(int size)
Returns an AbstractPollOperation object to read data in non-blocking mode.
*string getSSLCipherName()
Returns the name of the cipher for an encrypted connection or NOTHING if a secure connection has not ...
int listen(int backlog=20)
Listens for connections on a bound socket; sets the socket in a listening state.
nothing sendHTTPResponseWithCallback(code scb, softint status_code, string status_desc, string http_version, hash< auto > headers, timeout timeout_ms=-1)
Sends an HTTP response with user-defined headers given as a hash and a message body to send with chun...
*Socket accept(timeout timeout_ms)
Accepts connections on a listening socket (see Socket::listen()) accepting a timeout value with a mil...
*string getSSLCipherVersion()
Returns the version string of the cipher for an encrypted connection or NOTHING if a secure connectio...
nothing setWarningQueue(int warning_ms, int warning_bs, Queue queue, auto arg, timeout min_ms=1s)
Sets a Queue object to receive socket warnings.
int recvu4LSB(timeout timeout_ms=-1)
Receives a 4-byte (32-bit) unsigned integer in little-endian format from the socket.
int recvi2(timeout timeout_ms=-1)
Receives a 2-byte (16-bit) signed integer in big-endian format (network byte order) from the socket.
bool isWriteFinished(timeout timeout_ms=0)
Returns True or False depending on whether all the data has been written to the socket.
nothing connectUNIXSSL(string path, softint socktype=SOCK_STREAM, softint protocol=0)
Connects to the given UNIX domain socket file and attempts to establish a TLS/SSL connection.
nothing setCertificateAndPrivateKey(SSLCertificate cert, SSLPrivateKey key)
Sets the X.509 certificate and private key in one atomic operation to use for negotiating encrypted c...
*string verifyPeerCertificate()
Returns a string code giving the result of verifying the remote certificate or NOTHING if an encrypte...
int recvi4LSB(timeout timeout_ms=-1)
Receives a 4-byte (32-bit) signed integer in little-endian format from the socket.
bool isSecure()
Returns True if the connection is a secure TLS/SSL connection.
AbstractPollOperation startPollUpgradeClientToSSL()
Returns an AbstractPollOperation object to upgrade a connected client socket to SSL.
nothing sendBinary2(string str, timeout timeout_ms=-1)
Sends string data over the socket without converting the string to the socket's encoding,...
*Socket acceptSSL(timeout timeout_ms)
Accepts connections on a listening socket and attempts to negotiate a TLS/SSL connection accepting a ...
int sendi4LSB(softint i=0, timeout timeout_ms=-1)
Sends a 4-byte (32-bit) integer in little-endian format over the socket.
int getConnectionId()
Returns an integer connection ID that is incremented every time the socket is disconnected.
nothing connectINETSSL(string host, softstring service, timeout timeout_ms=-1, softint family=AF_UNSPEC, softint socktype=SOCK_STREAM, softint protocol=0)
Connects to the given host and port and attempts to establish a TLS/SSL connection; accepts an option...
*SSLCertificate getRemoteCertificate()
Returns any remote certificate captured or NOTHING if there is none.
nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash< auto > headers, Qore::InputStream input_stream, int max_chunk_size=4096, *reference< hash< auto >> info, timeout timeout_ms=-1, *code tcb)
Sends an HTTP response with user-defined headers and a message body from an input stream in chunked t...
int getSslVerifyMode()
returns the current SSL verification mode
AbstractPollOperation startPollConnect(string target)
Returns an AbstractPollOperation object to poll the socket for a standard connection.
nothing connectINET(string host, softstring service, timeout timeout_ms=-1, softint family=AF_UNSPEC, softint socktype=SOCK_STREAM, softint protocol=0)
Connects to the given host and port with an optional timeout value with a millisecond resolution.
int recvi8LSB(timeout timeout_ms=-1)
Receives an 8-byte (64-bit) signed integer in little-endian format from the socket.
nothing connect(string target, timeout timeout_ms=-1)
Connects to a remote port (if the string has a format "host:port") or UNIX domain socket file.
int bind(int port, softbool reuseaddr=False)
Opens and binds the socket to an INET port on all interfaces.
nothing setPrivateKey(string key_pem, *string pass)
Sets the private key to use for negotiating encrypted connections along with the X....
nothing upgradeServerToSSL(timeout timeout_ms=-1)
Upgrades a server socket connection to a TLS/SSL connection.
int bind(string str, softbool reuseaddr=False)
Opens and binds the socket to a port, interface and port (if the bind_to string has a format "host:po...
AbstractPollOperation startPollRecvUntilBytesString(string pattern)
Returns an AbstractPollOperation object to read data in non-blocking mode.
nothing sendBinary2(binary bin, timeout timeout_ms=-1)
Sends binary data over the socket; if any errors occur, an exception is thrown.
int sendi8(softint i=0, timeout timeout_ms=-1)
Sends an 8-byte (64-bit) integer in big-endian format (network byte order) over the socket.
nothing bindINET(*string iface, *softstring service, softbool reuseaddr=False, softint family=AF_UNSPEC, softint socktype=SOCK_STREAM, softint protocol=0)
Opens and binds the socket to the given IPv4 or IPv6 interface (or if no interface is given,...
int sendi4(softint i=0, timeout timeout_ms=-1)
Sends a 4-byte (32-bit) integer in big-endian format (network byte order) over the socket.
AbstractPollOperation startPollSend(binary data)
Returns an AbstractPollOperation object to send data in non-blocking mode.
nothing recvToOutputStream(Qore::OutputStream os, softint size=-1, timeout timeout_ms=-1)
Receives data from the socket and writes the bytes to an OutputStream.
nothing setCertificate(SSLCertificate cert)
Sets the X.509 certificate to use for negotiating encrypted connections.
readHTTPChunkedBodyWithCallback(code rcb, timeout timeout_ms=-1)
Reads in an HTTP message body sent in chunked transfer encoding and returns it with any footers recei...
nothing clearWarningQueue()
Removes any warning Queue object from the Socket.
int recvi1(timeout timeout_ms=-1)
Receives a 1-byte signed integer from the socket.
int getRecvTimeout()
Returns the receive timeout socket option value as an integer in milliseconds.
nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash< auto > headers, string body, *reference< hash< auto >> info, timeout timeout_ms=-1)
Sends an HTTP response with user-defined headers given as a hash and an optional message body.
nothing setCertificate(string cert_pem)
Sets the X.509 certificate to use for negotiating encrypted connections from the PEM-encoded string r...
clearStats()
Clears performance statistics.
int recvu2LSB(timeout timeout_ms=-1)
Receives a 2-byte (16-bit) unsigned integer in little-endian format from the socket.
binary recvBinary(softint size=0, timeout timeout_ms=-1)
Receives data from the socket and returns a binary object.
int send(string str, timeout timeout_ms=-1)
Sends string data over the socket; string data is converted to the socket's encoding if necessary; if...
readHTTPChunkedBodyBinaryWithCallback(code rcb, timeout timeout_ms=-1)
Reads in an HTTP message body sent in chunked transfer encoding and returns it with any footers recei...
static list< hash< SocketPollInfo > > poll(list< hash< SocketPollInfo >> items, timeout timeout_ms)
polls multiple sockets and returns all sockets with events
acceptAllCertificates(bool accept_all=True)
with peer verification enabled, all certificates are accepted regardless of the validity of the Certi...
int send(binary bin, timeout timeout_ms=-1)
Sends binary data over the socket; if any errors occur, an exception is thrown.
AbstractPollOperation startPollRecvString(int size)
Returns an AbstractPollOperation object to read data in non-blocking mode.
nothing setPrivateKey(binary key_der)
Sets the private key to use for negotiating encrypted connections along with the X....
hash< auto > getPeerInfo(bool host_lookup=True)
Returns a hash of information about the remote end for connected sockets.
int setSendTimeout(timeout timeout_ms)
sets the send timeout as a socket option
copy()
Creates a new Socket object, not based on the source being copied.
int sendi2(softint i=0, timeout timeout_ms=-1)
Sends a 2-byte (16-bit) integer in big-endian format (network byte order) over the socket.
setSslVerifyMode(int mode)
sets the SSL verification mode
int shutdown()
Ensures that a socket will be closed even if the file descriptor is shared with other processes (for ...
constructor()
Creates the socket object.
nothing shutdownSSL()
Shuts down the SSL connection on a secure connection.
AbstractPollOperation startPollRecvUntilBytesBinary(string pattern)
Returns an AbstractPollOperation object to read data in non-blocking mode.
nothing setEventQueue(Qore::Thread::Queue queue, auto arg, *bool with_data)
Sets a Queue object to receive socket events.
int recvu1(timeout timeout_ms=-1)
Receives a 1-byte unsigned integer from the socket.
nothing send2(binary bin, timeout timeout_ms=-1)
Sends binary data over the socket; if any errors occur, an exception is thrown.
AbstractPollOperation startPollSend(string data)
Returns an AbstractPollOperation object to send data in non-blocking mode.
hash< auto > readHTTPChunkedBodyBinary(timeout timeout_ms=-1)
Reads in an HTTP message body sent in chunked transfer encoding and returns it with any footers recei...
string readHTTPHeaderString(timeout timeout_ms=-1)
Retuns a string representing the data in the HTTP header read (reads until "\r\n\r\n")
nothing sendHTTPMessage(string method, string path, string http_version, hash< auto > headers, *binary body, *reference< hash< auto >> info, timeout timeout_ms=-1)
Sends an HTTP message with a method and user-defined headers given as a hash and an optional message ...
hash< auto > readHTTPChunkedBody(timeout timeout_ms=-1)
Reads in an HTTP message body sent in chunked transfer encoding and returns it with any footers recei...
int recvi4(timeout timeout_ms=-1)
Receives a 4-byte (32-bit) signed integer in big-endian format (network byte order) from the socket.
string getEncoding()
Returns the character encoding for the socket.
nothing setEventQueue()
Removes any Queue object from the Socket object so that socket events are no longer added to the Queu...
nothing sendHTTPChunkedBodyTrailer(*hash< auto > trailer, timeout timeout_ms=-1)
Sends the trialer of an HTTP message body in chunked transfer encoding.
nothing upgradeClientToSSL(timeout timeout_ms=-1)
Upgrades a client socket connection to a TLS/SSL connection.
nothing setCharset(string encoding)
Sets the character encoding for the socket.
nothing connectUNIX(string path, softint socktype=SOCK_STREAM, softint protocol=0)
Connects to a UNIX domain socket file.
nothing sendHTTPResponseWithCallback(code scb, softint status_code, string status_desc, string http_version, hash< auto > headers, *reference< hash< auto >> info, timeout timeout_ms=-1)
Sends an HTTP response with user-defined headers given as a hash and a message body to send with chun...
int sendBinary(string str, timeout timeout_ms=-1)
Sends string data over the socket without converting the string to the socket's encoding,...
bool isDataAvailable(timeout timeout_ms=0)
Returns True or False depending on whether there is data to be read on the socket.
int setNoDelay(bool nd=True)
Sets the boolean TCP_NODELAY setting for the socket.
Socket acceptSSL()
Accepts connections on a listening socket and attempts to negotiate a TLS/SSL connection.
string recv(softint size=0, timeout timeout_ms=-1)
Receives data from the socket and returns a string tagged with the Socket's character encoding.
int recvu4(timeout timeout_ms=-1)
Receives a 4-byte (32-bit) unsigned integer in big-endian format (network byte order) from the socket...
int recvi8(timeout timeout_ms=-1)
Receives an 8-byte (64-bit) signed integer in big-endian format (network byte order) from the socket.
hash< auto > readHTTPChunkedBodyToOutputStream(Qore::OutputStream os, timeout timeout_ms=-1)
Reads in an HTTP message body sent in chunked transfer encoding, writes it in an OutputStream and ret...
nothing sendHTTPMessage(string method, string path, string http_version, hash< auto > headers, string body, *reference< hash > info, timeout timeout_ms=-1)
Sends an HTTP message with a method and user-defined headers given as a hash and an optional message ...
int recvi2LSB(timeout timeout_ms=-1)
Receives a 2-byte (16-bit) signed integer in little-endian format from the socket.
int getPort()
Returns the port number of the socket for INET sockets.
nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash< auto > headers, *binary body, timeout timeout_ms=-1)
Sends an HTTP response with user-defined headers given as a hash and a message body as literal binary...
nothing bindUNIX(string path, softint socktype=SOCK_STREAM, softint protocol=0)
Opens and binds the socket to the given UNIX domain socket file as given by the filename argument....
nothing setEncoding(string encoding)
Sets the character encoding for the socket.
destructor()
Deletes the object.
nothing setPrivateKey(SSLPrivateKey key)
Sets the private key to use for negotiating encrypted connections along with the X....
nothing sendHTTPChunkedBodyFromInputStream(Qore::InputStream input_stream, int max_chunk_size=4096, timeout timeout_ms=-1, *code tcb)
Sends an HTTP message body in chunked transfer encoding.
string getCharset()
Returns the character encoding for the socket.
nothing sendHTTPResponse(softint status_code, string status_desc, string http_version, hash< auto > headers, *binary body, *reference< hash< auto >> info, timeout timeout_ms=-1)
Sends an HTTP response with user-defined headers given as a hash and a message body as literal binary...
Queue objects provide a blocking, thread-safe message-passing object to Qore programs
Definition: QC_Queue.dox.h:22
const True
logical True
Definition: qc_qore.dox.h:98
const False
logical False
Definition: qc_qore.dox.h:96
const AF_LOCAL
POSIX synonym for AF_UNIX.
Definition: QC_Socket.dox.h:3119
const AF_INET6
IPv6 address family.
Definition: QC_Socket.dox.h:3117
const AF_UNIX
UNIX domain address family (UNIX socket files)
Definition: QC_Socket.dox.h:3121
const AFMap
mapping from Network Address Family Constants to string codes
Definition: QC_Socket.dox.h:3105
const AF_UNSPEC
unspecified address family
Definition: QC_Socket.dox.h:3123
const AF_INET
IPv4 address family.
Definition: QC_Socket.dox.h:3115
const AFStrMap
mapping from network address family string codes to Network Address Family Constants
Definition: QC_Socket.dox.h:3107
const AI_NUMERICHOST
If this bit is set, then the host is assumed to be an address and no hostname lookup will be preforme...
Definition: QC_Socket.dox.h:3138
const AI_ADDRCONFIG
if this bit is set, addresses of each family are returned only if they are configured on the system
Definition: QC_Socket.dox.h:3132
const AI_CANONNAME
If this bit is set, then getaddrinfo() will return the canonical name of the hostname in the "canonna...
Definition: QC_Socket.dox.h:3136
const AI_ALL
If this bit is set along with AI_V4MAPPED then all matching IPv6 and IPv4 addresses are returned.
Definition: QC_Socket.dox.h:3134
const AI_NUMERICSERV
If this bit is set, then the service is assumed to be a numeric port string, and no service lookup wi...
Definition: QC_Socket.dox.h:3143
const AI_V4MAPPED
If this bit is set, getaddrinfo() will return IPv4-mapped IPv6 addresses on finding no matching IPv6 ...
Definition: QC_Socket.dox.h:3155
const AI_PASSIVE
If this bit is set, then the returned information should be usable for a call to Socket::bind()
Definition: QC_Socket.dox.h:3151
const IPPROTO_TCP
for the TCP protocol
Definition: QC_Socket.dox.h:3163
const IPPROTO_UDP
for the UDP protocol
Definition: QC_Socket.dox.h:3165
const SOCK_POLLIN
(input and output) for polling for read events
Definition: QC_Socket.dox.h:2927
const SOCK_POLLERR
(output only) indicates that the socket or connection is closed
Definition: QC_Socket.dox.h:2925
const SOCK_POLLOUT
(input and output) for polling for write events
Definition: QC_Socket.dox.h:2929
const SOCK_STREAM
for sequenced, reliable, two-way connection-based byte streams (the default)
Definition: QC_Socket.dox.h:3177
const SOCK_RAW
raw socket interface, only available to the superuser, untested
Definition: QC_Socket.dox.h:3175
const SOCK_DGRAM
for datagrams (connectionless, unreliable messages of a fixed (typically small) maximum length
Definition: QC_Socket.dox.h:3173
const SSL_VERIFY_NONE
Do not verify the peer's certificate.
Definition: QC_Socket.dox.h:2969
const SSL_VERIFY_FAIL_IF_NO_PEER_CERT
Require a client certificate in server mode.
Definition: QC_Socket.dox.h:2960
const SSL_VERIFY_CLIENT_ONCE
Only request a client certificate once in server mode.
Definition: QC_Socket.dox.h:2948
const SSL_VERIFY_PEER
Verify the peer's certificate.
Definition: QC_Socket.dox.h:2986
list< auto > list(...)
Returns a list of the arguments passed at the top level.
binary binary()
Always returns an empty binary object (of zero length)
const X509_V_ERR_CERT_SIGNATURE_FAILURE
Certificate signature failure; the signature of the certificate is invalid.
Definition: QC_Socket.dox.h:3013
const X509_V_ERR_CERT_REJECTED
Root CA is marked to reject the specified purpose.
Definition: QC_Socket.dox.h:3009
const X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH
Issuer name and serial number of candidate certificate do not match the authority key identifier of t...
Definition: QC_Socket.dox.h:2997
const X509_VerificationReasons
maps from varification strings to verification code descriptions
Definition: QC_Socket.dox.h:3063
const X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD
Format error in certificate's notBefore field (invalid time)
Definition: QC_Socket.dox.h:3027
const X509_V_ERR_PATH_LENGTH_EXCEEDED
The basicConstraints pathlength parameter has been exceeded.
Definition: QC_Socket.dox.h:3041
const X509_V_ERR_KEYUSAGE_NO_CERTSIGN
The keyUsage extension does not permit certificate signing.
Definition: QC_Socket.dox.h:3037
const X509_V_ERR_INVALID_PURPOSE
The certificate cannot be used for the specified purpose.
Definition: QC_Socket.dox.h:3035
const X509_V_ERR_APPLICATION_VERIFICATION
Verification failure.
Definition: QC_Socket.dox.h:3001
const X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT
Certificate is self-signed and cannot be found in the trusted list.
Definition: QC_Socket.dox.h:3023
const X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE
Unable to decrypt certificate's signature. This means that the actual signature value could not be de...
Definition: QC_Socket.dox.h:3049
const X509_V_ERR_UNABLE_TO_GET_CRL
Unable to get certificate CRL.
Definition: QC_Socket.dox.h:3053
const X509_V_OK
Verification OK.
Definition: QC_Socket.dox.h:3061
const X509_V_ERR_CRL_NOT_YET_VALID
CRL is not yet valid.
Definition: QC_Socket.dox.h:3019
const X509_V_ERR_CERT_CHAIN_TOO_LONG
Certificate chain too long.
Definition: QC_Socket.dox.h:3003
const X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY
Unable to get local issuer certificate. This normally means the list of trusted certificates is not c...
Definition: QC_Socket.dox.h:3057
const X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE
Unable to verify the first certificate.
Definition: QC_Socket.dox.h:3059
const X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY
Unable to decode issuer public key (SubjectPublicKeyInfo)
Definition: QC_Socket.dox.h:3047
const X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD
Format error in CRL's nextUpdate field (invalid time)
Definition: QC_Socket.dox.h:3031
const X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD
Format error in CRL's lastUpdate field (invalid time)
Definition: QC_Socket.dox.h:3029
const X509_V_ERR_CERT_REVOKED
Certificate has been revoked.
Definition: QC_Socket.dox.h:3011
const X509_V_ERR_SUBJECT_ISSUER_MISMATCH
The current candidate issuer certificate was rejected because its subject name did not match the issu...
Definition: QC_Socket.dox.h:3045
const X509_V_ERR_INVALID_CA
Invalid CA certificate.
Definition: QC_Socket.dox.h:3033
const X509_V_ERR_OUT_OF_MEM
Out of memory error.
Definition: QC_Socket.dox.h:3039
const X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT
Unable to get issuer certificate.
Definition: QC_Socket.dox.h:3055
const X509_V_ERR_CRL_HAS_EXPIRED
CRL has expired.
Definition: QC_Socket.dox.h:3017
const X509_V_ERR_CERT_UNTRUSTED
Root CA is not marked as trusted for the specified purpose.
Definition: QC_Socket.dox.h:3015
const X509_V_ERR_CERT_NOT_YET_VALID
Certificate is not yet valid.
Definition: QC_Socket.dox.h:3007
const X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD
Format error in certificate's notAfter field (invalid time)
Definition: QC_Socket.dox.h:3025
const X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE
Unable to decrypt CRL's signature.
Definition: QC_Socket.dox.h:3051
const X509_V_ERR_CERT_HAS_EXPIRED
Certificate has expired.
Definition: QC_Socket.dox.h:3005
const X509_V_ERR_AKID_SKID_MISMATCH
The current candidate issuer certificate was rejected because its subject key identifier was present ...
Definition: QC_Socket.dox.h:2999
const X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN
Self signed certificate in certificate chain.
Definition: QC_Socket.dox.h:3043
const X509_V_ERR_CRL_SIGNATURE_FAILURE
CRL signature failure; the signature of the certificate is invalid.
Definition: QC_Socket.dox.h:3021
main Qore-language namespace
Definition: Pseudo_QC_All.dox.h:3
Socket or other pollable object poll info hash.
Definition: QC_Socket.dox.h:6
int events
The poll type; see Socket Poll Constants for possible values to be combined with binary or.
Definition: QC_Socket.dox.h:10
Qore::AbstractPollableIoObject socket
the pollable object to monitor
Definition: QC_Socket.dox.h:12