Esempio n. 1
0
        /// <inheritdoc/>
        public override bool Write(ByteString payload)
        {
            var tokens = payload.Length;

            //need to declare recursive delegates first before they can self-reference
            //might want to consider making this consumer function strongly typed: http://blogs.msdn.com/b/wesdyer/archive/2007/02/02/anonymous-recursion-in-c.aspx
            bool TryConsume(ThrottleMode currentBucket)
            {
                var timeOfSend = MonotonicClock.GetNanos();
                var res        = currentBucket.TryConsumeTokens(timeOfSend, tokens);
                var newBucket  = res.Item1;
                var allow      = res.Item2;

                if (allow)
                {
                    return(OutboundThrottleMode.CompareAndSet(currentBucket, newBucket) || TryConsume(OutboundThrottleMode.Value));
                }
                return(false);
            }

            var throttleMode = OutboundThrottleMode.Value;

            if (throttleMode is Blackhole)
            {
                return(true);
            }

            var success = TryConsume(OutboundThrottleMode.Value);

            return(success && WrappedHandle.Write(payload));
        }
Esempio n. 2
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="payload">TBD</param>
 /// <returns>TBD</returns>
 public override bool Write(ByteString payload)
 {
     if (!_gremlinAdapter.ShouldDropOutbound(WrappedHandle.RemoteAddress, payload, "handler.write"))
     {
         return(WrappedHandle.Write(payload));
     }
     return(true);
 }
Esempio n. 3
0
 /// <inheritdoc/>
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = base.GetHashCode() + (OriginalLocalAddress != null ? OriginalLocalAddress.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (OriginalRemoteAddress != null ? OriginalRemoteAddress.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (WrappedHandle != null ? WrappedHandle.GetHashCode() : 0);
         return(hashCode);
     }
 }
Esempio n. 4
0
        public void InvokeEnd(double x, double y, IDrawingView view)
        {
            WrappedHandle.InvokeEnd(x, y, view);

            IUndoActivity activity = WrappedHandle.UndoActivity;

            if (activity != null && activity.Undoable && view.Editor.UndoManager != null)
            {
                view.Editor.UndoManager.PushUndo(activity);
                view.Editor.UndoManager.ClearRedos();
            }
        }
Esempio n. 5
0
        public void InvokeEnd(MouseEvent ev)
        {
            WrappedHandle.InvokeEnd(ev);

            IUndoActivity activity = WrappedHandle.UndoActivity;

            if (activity != null && activity.Undoable && ev.View.Editor.UndoManager != null)
            {
                ev.View.Editor.UndoManager.PushUndo(activity);
                ev.View.Editor.UndoManager.ClearRedos();
            }
        }
Esempio n. 6
0
 /// <summary>
 /// TBD
 /// </summary>
 public override void Disassociate()
 {
     WrappedHandle.Disassociate();
 }
Esempio n. 7
0
 public override bool Write(ByteString payload)
 {
     return(WrappedHandle.Write(Codec.ConstructPayload(payload)));
 }
Esempio n. 8
0
 public Gdk.Cursor CreateCursor()
 {
     return(WrappedHandle.CreateCursor());
 }
Esempio n. 9
0
 public void Draw(Context context, IDrawingView view)
 {
     WrappedHandle.Draw(context, view);
 }
Esempio n. 10
0
 public void InvokeStep(double x, double y, IDrawingView view)
 {
     WrappedHandle.InvokeStep(x, y, view);
 }
Esempio n. 11
0
 public PointD Locate()
 {
     return(WrappedHandle.Locate());
 }
Esempio n. 12
0
 public bool ContainsPoint(double x, double y)
 {
     return(WrappedHandle.ContainsPoint(x, y));
 }
Esempio n. 13
0
 public void InvokeStep(MouseEvent ev)
 {
     WrappedHandle.InvokeStep(ev);
 }