CloseConnection
Function Usage
Closes communication connections and releases communication resources.
Restrictions
The instruction stream engine requires secondary developers to implement the communication module for sending and receiving data. This function is an external symbol required by the instruction stream engine for secondary developers to implement in the communication module. The engine calls this function to destroy specified communication connections. After the communication is interrupted, an error code is returned when SendFully and Recv are called.
Prototype
int CloseConnection(int connection)
Parameters
Parameter |
Input/Output |
Type |
Description |
|---|---|---|---|
connection |
Input |
int |
Connection handle returned by OnNewConnectionCallback |
Returns
Data Type: int
The value can be:
- 0: success
- Other values except 0: error code.
Example Call
// The function prototype declaration is implemented by users.
using OnNewConnectionCallback = void (*)(int connection);
using RegConnectionCBFunc = int (*)(OnNewConnectionCallback newConnCb);
using CloseConnectionFunc = int (*)(int connection);
using SendFullyFunc = ssize_t (*)(int connection, uint8_t *buf, size_t len);
using RecvFunc = ssize_t (*)(int connection, uint8_t *buf, size_t len);
const char *soPath = "./libCommunication.so";
//The callback function notifies the server that a new connection has been established, which is implemented by the cloud phone engine.
// The input parameter connection indicates the valid handle to the new connection.
static void OnNewConnection(int conn);
void Test()
{
// Function symbol for dynamically loading the dynamic communication library
void *handle = dlopen(soPath, RTLD_GLOBAL | RTLD_LAZY | RTLD_NODELETE);
RegConnectionCBFunc regConnection = (RegConnectionCBFunc)dlsym(handle, "RegConnectionCB");
CloseConnectionFunc closeConnection = (CloseConnectionFunc)dlsym(handle, "CloseConnection");
SendFullyFunc sendFully = (SendFullyFunc)dlsym(handle, "SendFully");
RecvFunc recvData = (RecvFunc)dlsym(handle, "Recv");
size_t bufSize = 1024;
uint8_t *data = malloc(bufSize);
// Connect to the server.
int connRet = regConnection(OnNewConnection);
// Send data.
ssize_t ret = sendFully(conn, data, bufSize);
// Receive data.
ret = recvData(conn, data, bufSize);
// Release resources.
free(data);
closeConnection(conn);
dlclose(handle);
}