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 }