1%%
2%% Licensed to the Apache Software Foundation (ASF) under one
3%% or more contributor license agreements. See the NOTICE file
4%% distributed with this work for additional information
5%% regarding copyright ownership. The ASF licenses this file
6%% to you under the Apache License, Version 2.0 (the
7%% "License"); you may not use this file except in compliance
8%% with the License. You may obtain a copy of the License at
9%%
10%%   http://www.apache.org/licenses/LICENSE-2.0
11%%
12%% Unless required by applicable law or agreed to in writing,
13%% software distributed under the License is distributed on an
14%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15%% KIND, either express or implied. See the License for the
16%% specific language governing permissions and limitations
17%% under the License.
18%%
19
20-module(thrift_multiplexed_map_wrapper).
21
22-export([
23          new/0
24         ,store/3
25         ,find/2
26         ,fetch/2
27        ]).
28
29-type service_handler()     :: nonempty_string().
30-type module_()             :: atom().
31-type service_handler_map() :: [{ServiceHandler::service_handler(), Module::module_()}].
32
33-spec new() -> service_handler_map().
34new() ->
35    orddict:new().
36
37-spec store(ServiceHandler, Module, Map) -> NewMap when
38    ServiceHandler :: service_handler(),
39    Module         :: module_(),
40    Map            :: service_handler_map(),
41    NewMap         :: service_handler_map().
42store(ServiceHandler, Module, Map) ->
43    orddict:store(ServiceHandler, Module, Map).
44
45-spec find(ServiceHandler, Map) -> {ok, Module} | error when
46    ServiceHandler :: service_handler(),
47    Module         :: module_(),
48    Map            :: service_handler_map().
49find(ServiceHandler, Map) ->
50    orddict:find(ServiceHandler, Map).
51
52-spec fetch(ServiceHandler, Map) -> Module when
53    ServiceHandler :: service_handler(),
54    Module         :: module_(),
55    Map            :: service_handler_map().
56fetch(ServiceHandler, Map) ->
57    orddict:fetch(ServiceHandler, Map).
58