eRPC API Reference  Rev. 1.7.2
NXP Semiconductors
erpc_client_manager.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014-2016, 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__CLIENT_MANAGER_H_
11 #define _EMBEDDED_RPC__CLIENT_MANAGER_H_
12 
13 #ifdef __cplusplus
14 #include "erpc_codec.h"
15 #include "erpc_config_internal.h"
16 #if ERPC_MESSAGE_LOGGING
17 #include "erpc_message_loggers.h"
18 #endif
19 #if ERPC_NESTED_CALLS
20 #include "erpc_server.h"
21 #include "erpc_threading.h"
22 #endif
23 
30 extern "C" {
31 #endif
32 
34  uint32_t functionID);
36 #ifdef __cplusplus
37 }
38 
40 // Classes
42 
43 namespace erpc {
44 class RequestContext;
45 #if ERPC_NESTED_CALLS
46 class Server;
47 #endif
48 
54 #if ERPC_MESSAGE_LOGGING
55 class ClientManager : public MessageLoggers
56 #else
58 #endif
59 {
60 public:
67  : m_messageFactory(NULL)
68  , m_codecFactory(NULL)
69  , m_transport(NULL)
70  , m_sequence(0)
71  , m_errorHandler(NULL)
73  , m_server(NULL)
74  , m_serverThreadId(NULL)
75 #endif
77  , MessageLoggers()
78 #endif
79  {
80  }
81 
85  virtual ~ClientManager(void) {}
86 
93 
99  void setCodecFactory(CodecFactory *factory) { m_codecFactory = factory; }
100 
108  void setTransport(Transport *transport);
109 
115  virtual RequestContext createRequest(bool isOneway);
116 
122  virtual erpc_status_t performRequest(RequestContext &request);
123 
129  virtual void releaseRequest(RequestContext &request);
130 
136  void setErrorHandler(client_error_handler_t error_handler) { m_errorHandler = error_handler; }
137 
146  void callErrorHandler(erpc_status_t err, uint32_t functionID);
147 
148 #if ERPC_NESTED_CALLS
149 
154  void setServer(Server *server) { m_server = server; }
155 
161  void setServerThreadId(Thread::thread_id_t serverThreadId) { m_serverThreadId = serverThreadId; }
162 #endif
163 
164 protected:
168  uint32_t m_sequence;
170 #if ERPC_NESTED_CALLS
171  Server *m_server;
172  Thread::thread_id_t m_serverThreadId;
173 #endif
174 
184 
185 #if ERPC_NESTED_CALLS
186 
193  virtual erpc_status_t performNestedClientRequest(RequestContext &request);
194 #endif
195 
197  virtual erpc_status_t verifyReply(RequestContext &request);
198 
208 
209 private:
210  ClientManager(const ClientManager &);
211  ClientManager &operator=(const ClientManager &);
212 };
213 
220 {
221 public:
231  RequestContext(uint32_t sequence, Codec *codec, bool isOneway)
232  : m_sequence(sequence)
233  , m_codec(codec)
234  , m_oneway(isOneway)
235  {
236  }
237 
243  Codec *getCodec(void) { return m_codec; }
244 
250  uint32_t getSequence(void) const { return m_sequence; }
251 
257  bool isOneway(void) const { return m_oneway; }
258 
264  void setIsOneway(bool oneway) { m_oneway = oneway; }
265 
266 protected:
267  uint32_t m_sequence;
269  bool m_oneway;
270 };
271 
272 } // namespace erpc
273 
276 #endif
277 
278 #endif // _EMBEDDED_RPC__CLIENT_MANAGER_H_
Abstract interface for transport layer.
Definition: erpc_transport.h:35
int32_t erpc_status_t
Type used for all status and error return values.
Definition: erpc_common.h:86
Transport * m_transport
Transport layer to use.
Definition: erpc_client_manager.h:167
virtual erpc_status_t performClientRequest(RequestContext &request)
This function performs request.
Definition: erpc_client_manager.cpp:50
virtual erpc_status_t performRequest(RequestContext &request)
This function performs request.
Definition: erpc_client_manager.cpp:38
Base client implementation.
Definition: erpc_client_manager.h:57
uint32_t m_sequence
Sequence number.
Definition: erpc_client_manager.h:168
Abstract serialization encoder/decoder interface.
Definition: erpc_codec.h:50
CodecFactory * m_codecFactory
Codec to use.
Definition: erpc_client_manager.h:166
bool m_oneway
When true, request context will be oneway type (only send data).
Definition: erpc_client_manager.h:269
uint32_t m_sequence
Sequence number. To be sure that reply belong to current request.
Definition: erpc_client_manager.h:267
void setIsOneway(bool oneway)
Set request context to be oneway type (only send data).
Definition: erpc_client_manager.h:264
#define ERPC_MESSAGE_LOGGING
void callErrorHandler(erpc_status_t err, uint32_t functionID)
This function calls error handler callback function with given status.
Definition: erpc_client_manager.cpp:212
bool isOneway(void) const
Returns information if request context is oneway or not.
Definition: erpc_client_manager.h:257
Abstract interface for codec factory.
Definition: erpc_codec.h:420
ClientManager(void)
Constructor.
Definition: erpc_client_manager.h:66
void setTransport(Transport *transport)
This function sets transport layer to use.
Definition: erpc_client_manager.cpp:25
virtual erpc_status_t verifyReply(RequestContext &request)
Validate that an incoming message is a reply.
Definition: erpc_client_manager.cpp:158
Based server functionality.
Definition: erpc_server.h:107
uint32_t getSequence(void) const
Get sequence number (be sure that reply belong to current request).
Definition: erpc_client_manager.h:250
#define ERPC_NESTED_CALLS
Definition: erpc_arbitrated_client_manager.h:25
MessageBufferFactory * m_messageFactory
Message buffer factory to use.
Definition: erpc_client_manager.h:165
virtual ~ClientManager(void)
ClientManager destructor.
Definition: erpc_client_manager.h:85
Codec * getCodec(void)
Get inout codec (for writing).
Definition: erpc_client_manager.h:243
Codec * m_codec
Inout codec. Codec for receiving and sending data.
Definition: erpc_client_manager.h:268
Codec * createBufferAndCodec(void)
Create message buffer and codec.
Definition: erpc_client_manager.cpp:185
void(* client_error_handler_t)(erpc_status_t err, uint32_t functionID)
Definition: erpc_client_manager.h:33
void * thread_id_t
Unique identifier for a thread.
Definition: erpc_threading.h:60
virtual RequestContext createRequest(bool isOneway)
This function creates request context.
Definition: erpc_client_manager.cpp:30
Abstract interface for message buffer factory.
Definition: erpc_message_buffer.h:364
RequestContext(uint32_t sequence, Codec *codec, bool isOneway)
Constructor.
Definition: erpc_client_manager.h:231
void setCodecFactory(CodecFactory *factory)
This function sets codec factory to use.
Definition: erpc_client_manager.h:99
void setErrorHandler(client_error_handler_t error_handler)
This function sets error handler function for infrastructure errors.
Definition: erpc_client_manager.h:136
void setMessageBufferFactory(MessageBufferFactory *factory)
This function sets message buffer factory to use.
Definition: erpc_client_manager.h:92
Logging messages functionality.
Definition: erpc_message_loggers.h:77
virtual void releaseRequest(RequestContext &request)
This function releases request context.
Definition: erpc_client_manager.cpp:206
Encapsulates all information about a request.
Definition: erpc_client_manager.h:219
client_error_handler_t m_errorHandler
Pointer to function error handler.
Definition: erpc_client_manager.h:169