1 /*
2  * hunt-amqp: AMQP library for D programming language, based on hunt-net.
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 module hunt.amqp.streams.impl.TrackerImpl;
12 
13 import hunt.proton.amqp.messaging.Accepted;
14 import hunt.proton.amqp.transport.DeliveryState;
15 import hunt.proton.message.Message;
16 
17 import hunt.amqp.Handler;
18 import hunt.amqp.ProtonDelivery;
19 import hunt.amqp.impl.ProtonDeliveryImpl;
20 import hunt.amqp.streams.Tracker;
21 
22 class TrackerImpl : Tracker {
23   private  Message _message;
24   private  ProtonDeliveryImpl _delivery;
25   private  Handler!Tracker onUpdated;
26 
27   this(Message message, Handler!Tracker onUpdated) {
28     this._message = message;
29     this.onUpdated = onUpdated;
30   }
31 
32   
33   public Message message() {
34       return _message;
35   }
36 
37   public ProtonDelivery delivery() {
38     return _delivery;
39   }
40 
41   public void setDelivery(ProtonDeliveryImpl delivery) {
42     this._delivery = delivery;
43   }
44 
45   
46   public bool isAccepted() {
47     return   cast(Accepted)(_delivery.getRemoteState()) !is null;
48   }
49 
50   
51   public DeliveryState getRemoteState() {
52     return _delivery.getRemoteState();
53   }
54 
55   
56   public bool isRemotelySettled() {
57     return _delivery.remotelySettled();
58   }
59 
60   public Handler!Tracker handler() {
61     return onUpdated;
62   }
63 
64   public void setHandler(Handler!Tracker onUpdated) {
65     this.onUpdated = onUpdated;
66   }
67 
68 }