328 lines
8.8 KiB
C++
328 lines
8.8 KiB
C++
/*
|
|
* Generated by erpcgen 1.14.0 on Tue Apr 28 12:01:23 2026.
|
|
*
|
|
* AUTOGENERATED - DO NOT EDIT
|
|
*/
|
|
|
|
|
|
#include "file_service_server.hpp"
|
|
#if ERPC_ALLOCATION_POLICY == ERPC_ALLOCATION_POLICY_DYNAMIC
|
|
#include <new>
|
|
#include "erpc_port.h"
|
|
#endif
|
|
#include "erpc_manually_constructed.hpp"
|
|
|
|
#if 11400 != ERPC_VERSION_NUMBER
|
|
#error "The generated shim code version is different to the rest of eRPC code."
|
|
#endif
|
|
|
|
using namespace erpc;
|
|
using namespace std;
|
|
using namespace erpcShim;
|
|
|
|
#if ERPC_NESTED_CALLS_DETECTION
|
|
extern bool nestingDetection;
|
|
#endif
|
|
|
|
|
|
//! @brief Function to read struct binary_t
|
|
static void read_binary_t_struct(erpc::Codec * codec, binary_t * data);
|
|
|
|
|
|
// Read struct binary_t function implementation
|
|
static void read_binary_t_struct(erpc::Codec * codec, binary_t * data)
|
|
{
|
|
if(NULL == data)
|
|
{
|
|
return;
|
|
}
|
|
|
|
uint8_t * data_local;
|
|
codec->readBinary(data->dataLength, &data_local);
|
|
if (data->dataLength > 0)
|
|
{
|
|
data->data = (uint8_t *) erpc_malloc(data->dataLength * sizeof(uint8_t));
|
|
if (data->data == NULL)
|
|
{
|
|
codec->updateStatus(kErpcStatus_MemoryError);
|
|
}
|
|
else
|
|
{
|
|
memcpy(data->data, data_local, data->dataLength);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
data->data = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
//! @brief Function to free space allocated inside struct binary_t
|
|
static void free_binary_t_struct(binary_t * data);
|
|
|
|
|
|
// Free space allocated inside struct binary_t function implementation
|
|
static void free_binary_t_struct(binary_t * data)
|
|
{
|
|
erpc_free(data->data);
|
|
}
|
|
|
|
|
|
|
|
file_service_service::file_service_service(file_service_interface *_file_service_interface)
|
|
: erpc::Service(file_service_interface::m_serviceId)
|
|
, m_handler(_file_service_interface)
|
|
{
|
|
}
|
|
|
|
file_service_service::~file_service_service()
|
|
{
|
|
}
|
|
|
|
// return service interface handler.
|
|
file_service_interface* file_service_service::getHandler(void)
|
|
{
|
|
return m_handler;
|
|
}
|
|
|
|
// Call the correct server shim based on method unique ID.
|
|
erpc_status_t file_service_service::handleInvocation(uint32_t methodId, uint32_t sequence, Codec * codec, MessageBufferFactory *messageFactory, Transport * transport)
|
|
{
|
|
erpc_status_t erpcStatus;
|
|
switch (methodId)
|
|
{
|
|
case file_service_interface::m_fileWriteBeginId:
|
|
{
|
|
erpcStatus = fileWriteBegin_shim(codec, messageFactory, transport, sequence);
|
|
break;
|
|
}
|
|
|
|
case file_service_interface::m_fileWriteChunkId:
|
|
{
|
|
erpcStatus = fileWriteChunk_shim(codec, messageFactory, transport, sequence);
|
|
break;
|
|
}
|
|
|
|
case file_service_interface::m_fileWriteEndId:
|
|
{
|
|
erpcStatus = fileWriteEnd_shim(codec, messageFactory, transport, sequence);
|
|
break;
|
|
}
|
|
|
|
case file_service_interface::m_fileWriteAbortId:
|
|
{
|
|
erpcStatus = fileWriteAbort_shim(codec, messageFactory, transport, sequence);
|
|
break;
|
|
}
|
|
|
|
default:
|
|
{
|
|
erpcStatus = kErpcStatus_InvalidArgument;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return erpcStatus;
|
|
}
|
|
|
|
// Server shim for fileWriteBegin of file_service interface.
|
|
erpc_status_t file_service_service::fileWriteBegin_shim(Codec * codec, MessageBufferFactory *messageFactory, Transport * transport, uint32_t sequence)
|
|
{
|
|
erpc_status_t err = kErpcStatus_Success;
|
|
|
|
char * path = NULL;
|
|
uint32_t total_size;
|
|
int32_t result;
|
|
|
|
// startReadMessage() was already called before this shim was invoked.
|
|
|
|
{
|
|
uint32_t path_len;
|
|
char * path_local;
|
|
codec->readString(path_len, &path_local);
|
|
path = (char*) erpc_malloc((path_len + 1) * sizeof(char));
|
|
if ((path == NULL) || (path_local == NULL))
|
|
{
|
|
codec->updateStatus(kErpcStatus_MemoryError);
|
|
}
|
|
else
|
|
{
|
|
memcpy(path, path_local, path_len);
|
|
(path)[path_len] = 0;
|
|
}
|
|
}
|
|
|
|
codec->read(total_size);
|
|
|
|
err = codec->getStatus();
|
|
if (err == kErpcStatus_Success)
|
|
{
|
|
// Invoke the actual served function.
|
|
#if ERPC_NESTED_CALLS_DETECTION
|
|
nestingDetection = true;
|
|
#endif
|
|
result = m_handler->fileWriteBegin(path, total_size);
|
|
#if ERPC_NESTED_CALLS_DETECTION
|
|
nestingDetection = false;
|
|
#endif
|
|
|
|
// preparing MessageBuffer for serializing data
|
|
err = messageFactory->prepareServerBufferForSend(codec->getBufferRef(), transport->reserveHeaderSize());
|
|
}
|
|
|
|
if (err == kErpcStatus_Success)
|
|
{
|
|
// preparing codec for serializing data
|
|
codec->reset(transport->reserveHeaderSize());
|
|
|
|
// Build response message.
|
|
codec->startWriteMessage(message_type_t::kReplyMessage, file_service_interface::m_serviceId, file_service_interface::m_fileWriteBeginId, sequence);
|
|
|
|
codec->write(result);
|
|
|
|
err = codec->getStatus();
|
|
}
|
|
|
|
erpc_free(path);
|
|
|
|
return err;
|
|
}
|
|
|
|
// Server shim for fileWriteChunk of file_service interface.
|
|
erpc_status_t file_service_service::fileWriteChunk_shim(Codec * codec, MessageBufferFactory *messageFactory, Transport * transport, uint32_t sequence)
|
|
{
|
|
erpc_status_t err = kErpcStatus_Success;
|
|
|
|
binary_t *data = NULL;
|
|
data = (binary_t *) erpc_malloc(sizeof(binary_t));
|
|
if (data == NULL)
|
|
{
|
|
codec->updateStatus(kErpcStatus_MemoryError);
|
|
}
|
|
int32_t result;
|
|
|
|
// startReadMessage() was already called before this shim was invoked.
|
|
|
|
read_binary_t_struct(codec, data);
|
|
|
|
err = codec->getStatus();
|
|
if (err == kErpcStatus_Success)
|
|
{
|
|
// Invoke the actual served function.
|
|
#if ERPC_NESTED_CALLS_DETECTION
|
|
nestingDetection = true;
|
|
#endif
|
|
result = m_handler->fileWriteChunk(data);
|
|
#if ERPC_NESTED_CALLS_DETECTION
|
|
nestingDetection = false;
|
|
#endif
|
|
|
|
// preparing MessageBuffer for serializing data
|
|
err = messageFactory->prepareServerBufferForSend(codec->getBufferRef(), transport->reserveHeaderSize());
|
|
}
|
|
|
|
if (err == kErpcStatus_Success)
|
|
{
|
|
// preparing codec for serializing data
|
|
codec->reset(transport->reserveHeaderSize());
|
|
|
|
// Build response message.
|
|
codec->startWriteMessage(message_type_t::kReplyMessage, file_service_interface::m_serviceId, file_service_interface::m_fileWriteChunkId, sequence);
|
|
|
|
codec->write(result);
|
|
|
|
err = codec->getStatus();
|
|
}
|
|
|
|
if (data)
|
|
{
|
|
free_binary_t_struct(data);
|
|
}
|
|
erpc_free(data);
|
|
|
|
return err;
|
|
}
|
|
|
|
// Server shim for fileWriteEnd of file_service interface.
|
|
erpc_status_t file_service_service::fileWriteEnd_shim(Codec * codec, MessageBufferFactory *messageFactory, Transport * transport, uint32_t sequence)
|
|
{
|
|
erpc_status_t err = kErpcStatus_Success;
|
|
|
|
int32_t result;
|
|
|
|
// startReadMessage() was already called before this shim was invoked.
|
|
|
|
err = codec->getStatus();
|
|
if (err == kErpcStatus_Success)
|
|
{
|
|
// Invoke the actual served function.
|
|
#if ERPC_NESTED_CALLS_DETECTION
|
|
nestingDetection = true;
|
|
#endif
|
|
result = m_handler->fileWriteEnd();
|
|
#if ERPC_NESTED_CALLS_DETECTION
|
|
nestingDetection = false;
|
|
#endif
|
|
|
|
// preparing MessageBuffer for serializing data
|
|
err = messageFactory->prepareServerBufferForSend(codec->getBufferRef(), transport->reserveHeaderSize());
|
|
}
|
|
|
|
if (err == kErpcStatus_Success)
|
|
{
|
|
// preparing codec for serializing data
|
|
codec->reset(transport->reserveHeaderSize());
|
|
|
|
// Build response message.
|
|
codec->startWriteMessage(message_type_t::kReplyMessage, file_service_interface::m_serviceId, file_service_interface::m_fileWriteEndId, sequence);
|
|
|
|
codec->write(result);
|
|
|
|
err = codec->getStatus();
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
// Server shim for fileWriteAbort of file_service interface.
|
|
erpc_status_t file_service_service::fileWriteAbort_shim(Codec * codec, MessageBufferFactory *messageFactory, Transport * transport, uint32_t sequence)
|
|
{
|
|
erpc_status_t err = kErpcStatus_Success;
|
|
|
|
int32_t result;
|
|
|
|
// startReadMessage() was already called before this shim was invoked.
|
|
|
|
err = codec->getStatus();
|
|
if (err == kErpcStatus_Success)
|
|
{
|
|
// Invoke the actual served function.
|
|
#if ERPC_NESTED_CALLS_DETECTION
|
|
nestingDetection = true;
|
|
#endif
|
|
result = m_handler->fileWriteAbort();
|
|
#if ERPC_NESTED_CALLS_DETECTION
|
|
nestingDetection = false;
|
|
#endif
|
|
|
|
// preparing MessageBuffer for serializing data
|
|
err = messageFactory->prepareServerBufferForSend(codec->getBufferRef(), transport->reserveHeaderSize());
|
|
}
|
|
|
|
if (err == kErpcStatus_Success)
|
|
{
|
|
// preparing codec for serializing data
|
|
codec->reset(transport->reserveHeaderSize());
|
|
|
|
// Build response message.
|
|
codec->startWriteMessage(message_type_t::kReplyMessage, file_service_interface::m_serviceId, file_service_interface::m_fileWriteAbortId, sequence);
|
|
|
|
codec->write(result);
|
|
|
|
err = codec->getStatus();
|
|
}
|
|
|
|
return err;
|
|
}
|