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 module hunt.proton.codec.messaging.AcceptedType;
13 
14 import hunt.Object;
15 import hunt.collection.List;
16 import hunt.proton.amqp.Symbol;
17 import hunt.proton.amqp.UnsignedLong;
18 import hunt.proton.amqp.messaging.Accepted;
19 import hunt.proton.codec.AbstractDescribedType;
20 import hunt.proton.codec.Decoder;
21 import hunt.proton.codec.DescribedTypeConstructor;
22 import hunt.proton.codec.EncoderImpl;
23 import hunt.collection.ArrayList;
24 import hunt.Exceptions;
25 
26 import std.concurrency : initOnce;
27 
28 class AcceptedType : AbstractDescribedType!(Accepted, List!Object) , DescribedTypeConstructor!(Accepted)
29 {
30 
31     //private static Object[] DESCRIPTORS =
32     //{
33     //    UnsignedLong.valueOf(0x0000000000000024L), Symbol.valueOf("amqp:accepted:list"),
34     //};
35 
36   //  private static UnsignedLong DESCRIPTOR = UnsignedLong.valueOf(0x0000000000000024L);
37 
38 
39 
40     static Object[]  DESCRIPTORS() {
41         __gshared Object[]  inst;
42         return initOnce!inst([UnsignedLong.valueOf(0x0000000000000024L), Symbol.valueOf("amqp:accepted:list")]);
43     }
44 
45     static UnsignedLong  DESCRIPTOR() {
46         __gshared UnsignedLong  inst;
47         return initOnce!inst(UnsignedLong.valueOf(0x0000000000000024L));
48     }
49 
50     this(EncoderImpl encoder)
51     {
52         super(encoder);
53     }
54 
55     override
56     protected UnsignedLong getDescriptor()
57     {
58         return DESCRIPTOR;
59     }
60 
61     override
62     protected List!Object wrap(Accepted val)
63     {
64         return new ArrayList!Object();
65     }
66 
67     override
68     public TypeInfo getTypeClass()
69     {
70         return typeid(Accepted);
71     }
72 
73     public Accepted newInstance(Object described)
74     {
75         return Accepted.getInstance();
76     }
77 
78     public static void register(Decoder decoder, EncoderImpl encoder)
79     {
80         AcceptedType type = new AcceptedType(encoder);
81         //implementationMissing(false);
82         foreach(Object descriptor ; DESCRIPTORS)
83         {
84             decoder.registerDynamic(descriptor, type);
85         }
86         encoder.register(type);
87     }
88 }