/// <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)); }
/// <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); }
/// <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); } }
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(); } }
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(); } }
/// <summary> /// TBD /// </summary> public override void Disassociate() { WrappedHandle.Disassociate(); }
public override bool Write(ByteString payload) { return(WrappedHandle.Write(Codec.ConstructPayload(payload))); }
public Gdk.Cursor CreateCursor() { return(WrappedHandle.CreateCursor()); }
public void Draw(Context context, IDrawingView view) { WrappedHandle.Draw(context, view); }
public void InvokeStep(double x, double y, IDrawingView view) { WrappedHandle.InvokeStep(x, y, view); }
public PointD Locate() { return(WrappedHandle.Locate()); }
public bool ContainsPoint(double x, double y) { return(WrappedHandle.ContainsPoint(x, y)); }
public void InvokeStep(MouseEvent ev) { WrappedHandle.InvokeStep(ev); }