1 /* 2 * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef STANDALONE_SERVICE_CONTEXT_H 8 #define STANDALONE_SERVICE_CONTEXT_H 9 10 #include <cstddef> 11 #include <service_locator.h> 12 #include "rpc/common/caller/rpc_caller_session.h" 13 #include "rpc/common/endpoint/rpc_service_interface.h" 14 #include "rpc/direct/direct_caller.h" 15 #include <string> 16 17 class standalone_service_context 18 { 19 public: 20 standalone_service_context(const char *sn); 21 standalone_service_context(const char *sn, size_t rpc_buffer_size_override); 22 virtual ~standalone_service_context(); 23 24 void init(); 25 void deinit(); 26 27 struct rpc_caller_session *open(); 28 void close(struct rpc_caller_session *session); 29 30 const std::string &get_service_name() const; 31 struct service_context *get_service_context(); 32 33 protected: 34 void set_rpc_interface(rpc_service_interface *iface); 35 do_init()36 virtual void do_init() {} do_deinit()37 virtual void do_deinit() {} 38 39 private: 40 std::string m_sn; 41 int m_ref_count; 42 size_t m_rpc_buffer_size_override; 43 struct service_context m_service_context; 44 struct rpc_service_interface *m_rpc_interface; 45 }; 46 47 #endif /* STANDALONE_SERVICE_CONTEXT_H */ 48