Connect={Params="Host, Port, LinkCallbacks",Return="bool",Notes="(STATIC) Begins establishing a (client) TCP connection to the specified host. Uses the LinkCallbacks table to report progress, success, errors and incoming data. Returns false if it fails immediately (bad port value, bad hostname format), true otherwise. Host can be either an IP address or a hostname."},
HostnameToIP={Params="Host, LookupCallbacks",Return="bool",Notes="(STATIC) Begins a DNS lookup to find the IP address(es) for the specified host. Uses the LookupCallbacks table to report progress, success or errors. Returns false if it fails immediately (bad hostname format), true if the lookup started successfully. Host can be either a hostname or an IP address."},
IPToHostname={Params="Address, LookupCallbacks",Return="bool",Notes="(STATIC) Begins a reverse-DNS lookup to find out the hostname for the specified IP address. Uses the LookupCallbacks table to report progress, success or errors. Returns false if it fails immediately (bad address format), true if the lookup started successfully."},
Listen={Params="Port, ListenCallbacks",Return="{{cServerHandle|ServerHandle}}",Notes="(STATIC) Starts listening on the specified port. Uses the ListenCallbacks to report incoming connections or errors. Returns a {{cServerHandle}} object representing the server. If the listen operation failed, the OnError callback is called with the error details and the returned server handle will report IsListening() == false. The plugin needs to store the server handle object for as long as it needs the server running, if the server handle is garbage-collected by Lua, the listening socket will be closed and all current connections dropped."},
Close={Params="",Return="",Notes="Closes the link forcefully (TCP RST). There's no guarantee that the last sent data is even being delivered. See also the Shutdown() method."},
GetLocalIP={Params="",Return="string",Notes="Returns the IP address of the local endpoint of the TCP connection."},
GetLocalPort={Params="",Return="number",Notes="Returns the port of the local endpoint of the TCP connection."},
GetRemoteIP={Params="",Return="string",Notes="Returns the IP address of the remote endpoint of the TCP connection."},
GetRemotePort={Params="",Return="number",Notes="Returns the port of the remote endpoint of the TCP connection."},
Send={Params="Data",Return="",Notes="Sends the data (raw string) to the remote peer. The data is sent asynchronously and there is no report on the success of the send operation, other than the connection being closed or reset by the underlying OS."},
Shutdown={Params="",Return="",Notes="Shuts the socket down for sending data. Notifies the remote peer that there will be no more data coming from us (TCP FIN). The data that is in flight will still be delivered. The underlying socket will be closed when the remote end shuts down as well, or after a timeout."},
StartTLSClient={Params="OwnCert, OwnPrivateKey, OwnPrivateKeyPassword",Return="",Notes="Starts a TLS handshake on the link, as a client side of the TLS. The Own___ parameters specify the client certificate and its corresponding private key and password; all three parameters are optional and no client certificate is presented to the remote peer if they are not used or all empty. Once the TLS handshake is started by this call, all incoming data is first decrypted before being sent to the OnReceivedData callback, and all outgoing data is queued until the TLS handshake completes, and then sent encrypted over the link."},
StartTLSServer={Params="Certificate, PrivateKey, PrivateKeyPassword, StartTLSData",Return="",Notes="Starts a TLS handshake on the link, as a server side of the TLS. The plugin needs to specify the server certificate and its corresponding private key and password. The StartTLSData can contain data that the link has already reported as received but it should be used as part of the TLS handshake. Once the TLS handshake is started by this call, all incoming data is first decrypted before being sent to the OnReceivedData callback, and all outgoing data is queued until the TLS handshake completes, and then sent encrypted over the link."},