Inheritance: LinkPerformative
Ejemplo n.º 1
0
 protected void OnReceiveFirstTransfer(Transfer transfer)
 {
     Fx.Assert(transfer.DeliveryId.HasValue, "The first transfer must have a delivery id.");
     this.nextDeliveryId = transfer.DeliveryId.Value;
 }
Ejemplo n.º 2
0
            public bool TrySendTransfer(Delivery delivery, Transfer transfer, ArraySegment<byte>[] payload)
            {
                lock (this.SyncRoot)
                {
                    if (this.outgoingWindow == 0)
                    {
                        AmqpTrace.Provider.AmqpSessionWindowClosed(this, (int)this.nextOutgoingId.Value);
                        return false;
                    }

                    this.nextOutgoingId.Increment();
                    if (this.outgoingWindow < uint.MaxValue)
                    {
                        this.outgoingWindow--;
                    }

                    if (delivery != null)
                    {
                        this.AddDelivery(delivery);
                        transfer.DeliveryId = delivery.DeliveryId.Value;
                    }

                    this.Session.SendCommand(transfer, payload);
                }
                
                return true;
            }
Ejemplo n.º 3
0
 public bool OnAcceptTransfer(Delivery delivery, Transfer transfer, bool newDelivery)
 {
     try
     {
         this.incomingChannel.OnAcceptTransfer(delivery, transfer, newDelivery);
         return true;
     }
     catch (AmqpException exception)
     {
         this.SafeClose(exception);
         return false;
     }
 }
Ejemplo n.º 4
0
 // delivery MUST be null for continued transfer fragments
 public bool TrySendTransfer(Delivery delivery, Transfer transfer, ArraySegment<byte>[] payload)
 {
     return this.outgoingChannel.TrySendTransfer(delivery, transfer, payload);
 }
Ejemplo n.º 5
0
 protected override void OnProcessTransfer(Delivery delivery, Transfer transfer, Frame rawFrame)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 6
0
 public override bool CreateDelivery(Transfer transfer, out Delivery delivery)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 7
0
            public void OnAcceptTransfer(Delivery delivery, Transfer transfer, bool newDelivery)
            {
                if (!this.transferEverReceived)
                {
                    this.OnReceiveFirstTransfer(transfer);
                    this.transferEverReceived = true;
                }

                bool canAccept = false;
                lock (this.SyncRoot)
                {
                    if (this.incomingWindow > 0)
                    {
                        canAccept = true;
                        if (newDelivery)
                        {
                            this.AddDelivery(delivery);
                        }

                        this.nextIncomingId.Increment();
                        if (this.incomingWindow < uint.MaxValue)
                        {
                            this.incomingWindow--;
                        }
                    }
                }

                if (!canAccept)
                {
                    AmqpTrace.Provider.AmqpSessionWindowClosed(this, (int)this.nextIncomingId.Value);
                    throw new AmqpException(AmqpErrorCode.WindowViolation, null);
                }

                if (!newDelivery)
                {
                    // continued transfer for existing delivery: move window forward
                    this.OnWindowMoved(1);
                }
            }