1 /*
2 * hunt-proton: AMQP Protocol library for D programming language.
3 *
4 * Copyright (C) 2018-2019 HuntLabs
5 *
6 * Website: https://www.huntlabs.net/
7 *
8 * Licensed under the Apache-2.0 License.
9 *
10 */
11
12
13 module hunt.proton.amqp.messaging.TerminusExpiryPolicy;
14
15 import hunt.collection.HashMap;
16 import hunt.collection.Map;
17 import hunt.collection.HashMap;
18 import hunt.proton.amqp.Symbol;
19 import hunt.logging;
20
21 class TerminusExpiryPolicy
22 {
23 __gshared TerminusExpiryPolicy LINK_DETACH ;
24 __gshared TerminusExpiryPolicy SESSION_END ;
25 __gshared TerminusExpiryPolicy CONNECTION_CLOSE ;
26 __gshared TerminusExpiryPolicy NEVER ;
27
28 private Symbol _policy;
29 __gshared HashMap!(Symbol, TerminusExpiryPolicy) _map ;
30
31 this(string policy)
32 {
33 _policy = Symbol.valueOf(policy);
34 }
35
36 public Symbol getPolicy()
37 {
38 return _policy;
39 }
40
41 shared static this()
42 {
43 LINK_DETACH = new TerminusExpiryPolicy("link-detach");
44 SESSION_END = new TerminusExpiryPolicy("session-end");
45 CONNECTION_CLOSE = new TerminusExpiryPolicy("connection-close");
46 NEVER = new TerminusExpiryPolicy("never");
47 _map = new HashMap!(Symbol, TerminusExpiryPolicy)();
48 _map.put(LINK_DETACH.getPolicy(), LINK_DETACH);
49 _map.put(SESSION_END.getPolicy(), SESSION_END);
50 _map.put(CONNECTION_CLOSE.getPolicy(), CONNECTION_CLOSE);
51 _map.put(NEVER.getPolicy(), NEVER);
52 }
53
54 public static TerminusExpiryPolicy valueOf(Symbol policy)
55 {
56 TerminusExpiryPolicy expiryPolicy = _map.get(policy);
57 if(expiryPolicy is null)
58 {
59 //throw new IllegalArgumentException("Unknown TerminusExpiryPolicy: " ~ policy);
60 logError("Unknown TerminusExpiryPolicy");
61 }
62 return expiryPolicy;
63 }
64 }