'-------------------------------------------------------------------------------
' Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
'
' SPDX-License-Identifier: BSD-3-Clause
'
'-------------------------------------------------------------------------------

@startuml

class service_client

class rpc_caller
{
	rpc_call_handle call_begin()
	int call_invoke()
	void call_end()
}

abstract class service_context
{
	{abstract} rpc_caller open()
	{abstract} void close(rpc_caller)
}

class service_locator <<singleton>>
{
	service_context query(service_name)
	void relinquish(service_context)
}

service_locator ..> "finds" service_context
service_context ..> "opens session" rpc_caller
service_client ..> "queries" service_locator
service_client --> service_context
service_client --> rpc_caller

@enduml