Rate This Document
Findability
Accuracy
Completeness
Readability

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);
}