eRPC API Reference  Rev. 1.7.2
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 
165  virtual erpc_status_t run(void) = 0;
166 
170  virtual void stop(void) = 0;
171 
172 protected:
189  virtual erpc_status_t processMessage(Codec *codec, message_type_t msgType, uint32_t serviceId, uint32_t methodId,
190  uint32_t sequence);
191 
203  virtual erpc_status_t readHeadOfMessage(Codec *codec, message_type_t &msgType, uint32_t &serviceId,
204  uint32_t &methodId, uint32_t &sequence);
205 
213  virtual Service *findServiceWithId(uint32_t serviceId);
214 
215 #if ERPC_NESTED_CALLS
216  friend class ClientManager;
217  friend class ArbitratedClientManager;
218 
224  virtual erpc_status_t run(RequestContext &request) = 0;
225 #endif
226 
227 private:
228  // Disable copy ctor.
229  Server(const Server &);
230  Server &operator=(const Server &);
231 };
232 
233 } // namespace erpc
234 
237 #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:175
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:174
#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:173
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:176
Logging messages functionality.
Definition: erpc_message_loggers.h:77
Encapsulates all information about a request.
Definition: erpc_client_manager.h:219