Files
2024-05-18 23:53:26 +08:00

116 lines
4.1 KiB
C

/**
* @file GoReceiver.h
* @brief Declares the GoReceiver class.
*
* @internal
* Copyright (C) 2016-2021 by LMI Technologies Inc.
* Licensed under the MIT License.
* Redistributed files must retain the above copyright notice.
*/
#ifndef GO_SDK_RECEIVER_H
#define GO_SDK_RECEIVER_H
#include <GoSdk/GoSdkDef.h>
#include <kApi/Io/kNetwork.h>
#include <kApi/Io/kSerializer.h>
/**
* @class GoReceiver
* @extends kObject
* @ingroup GoSdk-Internal
* @brief Represents a data/health receiver.
*/
typedef kObject GoReceiver;
/** Defines the signature for a data message handler. */
typedef kStatus (kCall* GoReceiverMessageFx)(kPointer context, GoReceiver receiver, kSerializer reader);
/**
* Constructs a GoReceiver object.
*
* @public @memberof GoReceiver
* @version Introduced in firmware 4.0.10.27
* @param receiver Receives constructed receiver object.
* @param allocator Memory allocator (or kNULL for default)
* @return Operation status.
*/
GoFx(kStatus) GoReceiver_Construct(GoReceiver* receiver, kAlloc allocator);
/**
* Sets the size of buffers used for receiving data.
*
* Call this function before calling GoReceiver_Open.
*
* @public @memberof GoReceiver
* @version Introduced in firmware 4.0.10.27
* @param receiver Receiver object.
* @param socketSize Size of the read buffer used by the underlying operating system socket (-1 to leave unchanged).
* @param clientSize Size of the read buffer used by the receiver object (-1 to leave unchanged).
* @return Operation status.
*/
GoFx(kStatus) GoReceiver_SetBuffers(GoReceiver receiver, kSSize socketSize, kSSize clientSize);
/**
* Sets an I/O cancellation query handler for this receiver object.
*
* The I/O cancellation query handler will be polled periodically when I/O is blocked
* for a non-negligible amount of time. If the cancellation handler returns kERROR_ABORT,
* ongoing communication will be terminated.
*
* @public @memberof GoReceiver
* @version Introduced in firmware 4.0.10.27
* @param receiver Receiver object.
* @param function I/O cancellation callback function (or kNULL to unregister).
* @param context Context argument for callback (function receiver).
* @return Operation status.
*/
GoFx(kStatus) GoReceiver_SetCancelHandler(GoReceiver receiver, kCallbackFx function, kPointer context);
/**
* Sets a callback function that can be used to receive notifications when data is available to be read.
*
* @public @memberof GoReceiver
* @version Introduced in firmware 4.0.10.27
* @param receiver Receiver object.
* @param function Data callback function (or kNULL to unregister).
* @param context Context argument for callback (function receiver).
* @return Operation status.
*/
GoFx(kStatus) GoReceiver_SetMessageHandler(GoReceiver receiver, GoReceiverMessageFx function, kPointer context);
/**
* Opens a data connection to the specified sensor IP address and port.
*
* @public @memberof GoReceiver
* @version Introduced in firmware 4.0.10.27
* @param receiver Receiver object.
* @param address Sensor IP address.
* @param port Sensor data port.
* @return Operation status.
*/
GoFx(kStatus) GoReceiver_Open(GoReceiver receiver, kIpAddress address, k32u port);
/**
* Closes the data connection.
*
* @public @memberof GoReceiver
* @version Introduced in firmware 4.0.10.27
* @param receiver Receiver object.
* @return Operation status.
*/
GoFx(kStatus) GoReceiver_Close(GoReceiver receiver);
/**
* Reports whether the receiver object has been opened.
*
* @public @memberof GoReceiver
* @version Introduced in firmware 4.0.10.27
* @param receiver Receiver object.
* @return kTRUE if open; kFALSE otherwise.
*/
GoFx(kBool) GoReceiver_IsOpen(GoReceiver receiver);
#include <GoSdk/Internal/GoReceiver.x.h>
#endif