eRPC API Reference  Rev. 1.7.4
NXP Semiconductors
erpc_server.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014, Freescale Semiconductor, Inc.
3  * Copyright 2016-2017 NXP
4  * All rights reserved.
5  *
6  *
7  * SPDX-License-Identifier: BSD-3-Clause
8  */
9 
10 #ifndef _EMBEDDED_RPC__SERVER_H_
11 #define _EMBEDDED_RPC__SERVER_H_
12 
13 #include "erpc_codec.h"
14 #include "erpc_config_internal.h"
15 #if ERPC_NESTED_CALLS
16 #include "erpc_client_manager.h"
17 #endif
18 #if ERPC_MESSAGE_LOGGING
19 #include "erpc_message_loggers.h"
20 #endif
21 
28 // Classes
31 
32 namespace erpc {
33 #if ERPC_NESTED_CALLS
34 class RequestContext;
35 #endif
36 
41 class Service
42 {
43 public:
49  Service(uint32_t serviceId)
50  : m_serviceId(serviceId)
51  , m_next(NULL)
52  {
53  }
54 
58  virtual ~Service(void) {}
59 
65  uint32_t getServiceId(void) const { return m_serviceId; }
66 
72  Service *getNext(void) { return m_next; }
73 
79  void setNext(Service *next) { m_next = next; }
80 
91  virtual erpc_status_t handleInvocation(uint32_t methodId, uint32_t sequence, Codec *codec,
92  MessageBufferFactory *messageFactory) = 0;
93 
94 protected:
95  uint32_t m_serviceId;
97 };
98 
104 #if ERPC_MESSAGE_LOGGING
105 class Server : public MessageLoggers
106 #else
107 class Server
108 #endif
109 {
110 public:
116  Server(void)
117  : m_messageFactory()
118  , m_codecFactory()
119  , m_transport()
120  , m_firstService()
122  , MessageLoggers()
123 #endif
124  {
125  }
126 
130  virtual ~Server(void) {}
131 
137  void setMessageBufferFactory(MessageBufferFactory *factory) { m_messageFactory = factory; }
138 
144  void setCodecFactory(CodecFactory *factory) { m_codecFactory = factory; }
145 
153  void setTransport(Transport *transport);
154 
160  void addService(Service *service);
161 
167  void removeService(Service *service);
168 
172  virtual erpc_status_t run(void) = 0;
173 
177  virtual void stop(void) = 0;
178 
179 protected:
196  virtual erpc_status_t processMessage(Codec *codec, message_type_t msgType, uint32_t serviceId, uint32_t methodId,
197  uint32_t sequence);
198 
210  virtual erpc_status_t readHeadOfMessage(Codec *codec, message_type_t &msgType, uint32_t &serviceId,
211  uint32_t &methodId, uint32_t &sequence);
212 
220  virtual Service *findServiceWithId(uint32_t serviceId);
221 
222 #if ERPC_NESTED_CALLS
223  friend class ClientManager;
224  friend class ArbitratedClientManager;
225 
231  virtual erpc_status_t run(RequestContext &request) = 0;
232 #endif
233 
234 private:
235  // Disable copy ctor.
236  Server(const Server &);
237  Server &operator=(const Server &);
238 };
239 
240 } // namespace erpc
241 
244 #endif // _EMBEDDED_RPC__SERVER_H_
Abstract interface for transport layer.
Definition: erpc_transport.h:35
void setCodecFactory(CodecFactory *factory)
Set CodecFactory to use.
Definition: erpc_server.h:144
Service(uint32_t serviceId)
Constructor.
Definition: erpc_server.h:49
int32_t erpc_status_t
Type used for all status and error return values.
Definition: erpc_common.h:86
message_type_t
Types of messages that can be encoded.
Definition: erpc_codec.h:33
Transport * m_transport
Definition: erpc_server.h:182
Base client implementation.
Definition: erpc_client_manager.h:57
Abstract interface for service, which can be executed on server side.
Definition: erpc_server.h:41
uint32_t m_serviceId
Definition: erpc_server.h:95
Abstract serialization encoder/decoder interface.
Definition: erpc_codec.h:50
CodecFactory * m_codecFactory
Definition: erpc_server.h:181
#define ERPC_MESSAGE_LOGGING
virtual ~Service(void)
Service destructor.
Definition: erpc_server.h:58
Service * m_next
Definition: erpc_server.h:96
Server(void)
Constructor.
Definition: erpc_server.h:116
virtual ~Server(void)
ClientManager destructor.
Definition: erpc_server.h:130
Abstract interface for codec factory.
Definition: erpc_codec.h:420
Service * getNext(void)
Return next service.
Definition: erpc_server.h:72
Client that can share a transport with a server.
Definition: erpc_arbitrated_client_manager.h:40
Based server functionality.
Definition: erpc_server.h:107
Definition: erpc_arbitrated_client_manager.h:25
void setMessageBufferFactory(MessageBufferFactory *factory)
Set MessageBufferFactory to use.
Definition: erpc_server.h:137
uint32_t getServiceId(void) const
Return service id number.
Definition: erpc_server.h:65
void setNext(Service *next)
Set next service.
Definition: erpc_server.h:79
MessageBufferFactory * m_messageFactory
Definition: erpc_server.h:180
virtual erpc_status_t handleInvocation(uint32_t methodId, uint32_t sequence, Codec *codec, MessageBufferFactory *messageFactory)=0
This function call function implementation of current service.
Abstract interface for message buffer factory.
Definition: erpc_message_buffer.h:364
Service * m_firstService
Definition: erpc_server.h:183
Logging messages functionality.
Definition: erpc_message_loggers.h:77
Encapsulates all information about a request.
Definition: erpc_client_manager.h:219