1'-------------------------------------------------------------------------------
2' Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
3'
4' SPDX-License-Identifier: BSD-3-Clause
5'
6'-------------------------------------------------------------------------------
7
8@startuml
9
10class service_client
11
12class rpc_caller
13{
14	rpc_call_handle call_begin()
15	int call_invoke()
16	void call_end()
17}
18
19abstract class service_context
20{
21	{abstract} rpc_caller open()
22	{abstract} void close(rpc_caller)
23}
24
25class service_locator <<singleton>>
26{
27	service_context query(service_name)
28	void relinquish(service_context)
29}
30
31service_locator ..> "finds" service_context
32service_context ..> "opens session" rpc_caller
33service_client ..> "queries" service_locator
34service_client --> service_context
35service_client --> rpc_caller
36
37@enduml