blob: ac1e3b158c86d50c0363a3df61c685b248bfb557 [file] [log] [blame]
' Licensed under the Apache License, Version 2.0 (the "License");
' you may not use this file except in compliance with the License.
' You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
' Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
' on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' See the License for the specific language governing permissions and limitations under the License.
@startuml
class JsonRPCManager {
add_handler(name, Func)
add_notification_handler(name, Func)
rsponse handle_call(request)
JsonRPCManager instance()
}
note left: Singleton class.
class Dispatcher {
_handlers: std::unordered_map<std::string, InternalHandler>
}
class InternalHandler {
_func: std::variant<std::monostate, Notification, Method, PluginMethod>
}
class FunctionWrapper {
callback: std::function
}
JsonRPCManager *-- Dispatcher
note right: Class that knows how to call each callback handler. Storage class.
Dispatcher *-- InternalHandler
InternalHandler *-- FunctionWrapper
@enduml