Source code for connectionmanager/clientconnection.h
// SPDX-License-Identifier: MIT
#pragma once
#include <safu/result.h>
#include "connectionmanager/clientconnection_types.h"
[docs]/*******************************************************************
* Initializes a new ClientConnection.
*
* Parameters:
* clientConnection: ClientConnection structure that will be initialized
* sharedData: Reference to shared data of all connecitons.
* Returns:
* - SAFU_RESULT_FAILED on error
* - SAFU_RESULT_OK on success
******************************************************************/
safuResultE_t elosClientConnectionInitialize(elosClientConnection_t *clientConnection,
elosClientConnectionSharedData_t *sharedData);
[docs]/*******************************************************************
* Creates a worker thread using the given socketFd for communication.
* Each ClientConnection can only handle one worker thread,
* calling Start a second time will result in an error.
*
* Parameters:
* clientConnection: The ClientConnection to be started
* socketFd: The socketFd that shall be used for communication
* Returns:
* - SAFU_RESULT_FAILED on error
* - SAFU_RESULT_OK on success
******************************************************************/
safuResultE_t elosClientConnectionStart(elosClientConnection_t *clientConnection, int socketFd);
[docs]/*******************************************************************
* Stops the currently active worker thread.
* Start can be called again with a new socketFd after
* a ClientConnection has been stopped.
*
* Parameters:
* clientConnection: The ClientConnection to be stopped
* Returns:
* - SAFU_RESULT_FAILED on error
* - SAFU_RESULT_OK on success
******************************************************************/
safuResultE_t elosClientConnectionStop(elosClientConnection_t *clientConnection);
[docs]/*******************************************************************
* Frees all resources used be the given ClientConnection.
* Will also automatically Stop an active worker thread
* before freeing up the resources.
*
* Parameters:
* clientConnection: The ClientConnection to be freed
* Returns:
* - SAFU_RESULT_FAILED on error
* - SAFU_RESULT_OK on success
******************************************************************/
safuResultE_t elosClientConnectionDeleteMembers(elosClientConnection_t *clientConnection);
[docs]/*******************************************************************
* Checks if the given ClientConnection has been started or not.
*
* Parameters:
* clientConnection: The ClientConnection to be checked
* active: set to 'true' if a connection is active/started, 'false' otherwise.
* Returns:
* - SAFU_RESULT_FAILED on error
* - SAFU_RESULT_OK on success
******************************************************************/
safuResultE_t elosClientConnectionIsActive(elosClientConnection_t *clientConnection, bool *active);
[docs]/*******************************************************************
* Worker thread function used by pthread_create()
*
* Parameters:
* ptr: Pointer to a ClientConnection struct
* Returns:
* - Always NULL
******************************************************************/
void *elosClientConnectionWorker(void *ptr);