cmvr_head/applications/erpc/proto/generated/file_service_server.cpp

328 lines
8.8 KiB
C++
Raw Normal View History

2026-04-28 16:48:03 +08:00
/*
* 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;
}