1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-06 00:13:33 +00:00
Files
MeshAgent/docs/files/ILibAsyncSocket.md
2022-08-23 11:59:16 -07:00

5.8 KiB

ILibAsyncSocket.c

Abstract

ILibAsyncSocket provides the underyling TCP socket implementation for the Mesh Agent.

Functions

ILibCreateAsyncSocketModule()
ILibCreateAsyncSocketModuleWithMemory()
Creates an ILibAsyncSocket object, with an optional memory allocation for use by the user.

ILibAsyncSocket_IsUsingTls(token)
Evaluates to true if the specified connection is a TLS connection

ILibAsyncSocket_SetReAllocateNotificationCallback(AsyncSocketToken, Callback)
Triggers the specified callback when a realloc() results in the data buffer being moved to a different address.

ILibAsyncSocket_GetUser(socketModule)
ILibAsyncSocket_GetUser2(socketModule)
ILibAsyncSocket_GetUser3(socketModule)
Sets a user object to the specified socket object

ILibAsyncSocket_SetUser(socketModule, user)
ILibAsyncSocket_SetUser2(socketModule, user)
ILibAsyncSocket_SetUser3(socketModule, user)
Fetches the user object associated with the specified socket object

ILibAsyncSocket_UpdateOnData(module, OnData)
Replaces the existing data handler with the specified OnData handler for the socket object

ILibAsyncSocket_UpdateCallbacks(module, OnData, OnConnect, OnDisconnect, OnSendOK)
Replaces all the existing handlers with the specified handlers, for the specified socket object

ILibAsyncSocket_GetSocket(module)
Fetches the internal socket descriptor for the specified socket object

ILibAsyncSocket_GetPendingBytesToSend(socketModule)
Fetches the number of bytes pending to be sent by the socket object

ILibAsyncSocket_GetTotalBytesSent(socketModule)
Fetches the total number of bytes that have been sent by the specified socket object

ILibAsyncSocket_ResetTotalBytesSent(socketModule)
Resets the TotalBytesSent counter, for the specified socket object

ILibAsyncSocket_ConnectTo(socketModule, localInterface, remoteAddress, InterruptPtr, user)
Connects the socket object to the specified address using the specified interface

ILibAsyncSocket_SendTo_MultiWrite(socketModule, remoteAddress, count, ...) Sends data to the specified address, specifying the number of triplets passed in the ellipses, where a triplet consists of (buffer, length, userFree)

ILibAsyncSocket_Disconnect(socketModule)
Disconnects the specified socket object

ILibAsyncSocket_GetBuffer(socketModule, buffer, BeginPointer, EndPointer) Returns the buffer associated with an ILibAsyncSocket

ILibAsyncSocket_UseThisSocket(socketModule, UseThisSocket, InterruptPtr, user) Associates an already connected socket with the ILibAsyncSocket object

ILibAsyncSocket_SetSSLContext(socketModule, ssl_ctx, tlsMode)
ILibAsyncSocket_SetSSLContextEx(socketModule, ssl_ctx, tlsMode, hostname)
Associate an OpenSSL Context Object with the specified ILibAsyncSocket object

ILibAsyncSocket_GetSSL(socketModule)
ILibAsyncSocket_GetSSLContext(socketModule)
Fetches the OpenSSL Object and Context associated with the specified ILibAsyncSocket object

ILibAsyncSocket_SetRemoteAddress(socketModule, remoteAddress)
Updates the remote address of the specified ILibAsyncSocket object

ILibAsyncSocket_GetRemoteInterface(socketModule, remoteAddress)
Fetches the associated remote interface of the specified ILibAsyncSocket object, and writes it to remoteAddress, returning the number of bytes written.

ILibAsyncSocket_SetLocalInterface(module, localAddress)
Updates the local interface of the specified ILibAsyncSocket object

ILibAsyncSocket_GetLocalInterface(socketModule, localAddress)
Fetches the associated local interface of the specified ILibAsyncSocketObject, and writes it to localAddress, returning the number of bytes written.

ILibAsyncSocket_IsFree(socketModule)
Returns non-zero if the specified ILibAsyncSocket object is in use

ILibAsyncSocket_IsConnected(socketModule)
Returns non-zero if the specified ILibAsyncSocket object is connected

int ILibAsyncSocket_IsDomainSocket(ILibAsyncSocket_SocketModule socketModule); unsigned short ILibAsyncSocket_GetLocalPort(ILibAsyncSocket_SocketModule socketModule);

ILibAsyncSocket_Resume(socketModule)
Resumes socket I/O of the specified ILibAsyncSocket object

ILibAsyncSocket_Pause(socketModule)
Suspends the socket I/O of the specified ILibAsyncSocket object

ILibAsyncSocket_WasClosedBecauseBufferSizeExceeded(socketModule)
Returns non-zero if the specified ILibAsyncSocket object was disconnected because the underlying buffer size was exceeded

ILibAsyncSocket_SetMaximumBufferSize(module, maxSize, OnBufferSizeExceededCallback, user)
Sets a maximum buffer size for the specified ILibAsyncSocket object, triggering the specified handler if the buffer size is exceeded.

ILibAsyncSocket_SetSendOK(module, OnSendOK)
Updates the OnSendOK handler, which is triggered whenever a pending write operation is completed.

ILibAsyncSocket_IsIPv6LinkLocal(LocalAddress)
Returns non-zero if the specified address is an IPv6 Link Local Address

ILibAsyncSocket_IsModuleIPv6LinkLocal(module)
Returns non-zero if the associated socket with the specified ILibAsyncSocket object is an IPv6 Link Local socket.

ILibAsyncSocket_SetTimeout(module, timeoutSeconds, timeoutHandler)
ILibAsyncSocket_SetTimeoutEx(module, timeoutMilliseconds, timeoutHandler)
Sets an idle timeout handler for the specified ILibAsyncSocket object, which triggers after the specified amount of inactivity

ILibAsyncSocket_SslGetCert(socketModule)
Returns the Peer's TLS Certificate, NULL if none was presented. Must call X509_free() when done with the certificate._

ILibAsyncSocket_SslGetCerts(socketModule)
Returns the Certificate Chain presented by the Peer. NULL if none was presented. NOTE: X509 Cert's Reference Count is not incremented.