public void SendToken(TPacket packet, OnTokenPacketCallback callback) { if (!TryAssignToken(packet, callback)) { return; } var payload = PackageTokenPacket(packet); SendBuffer(payload, packet); }
public void SendTokenAsync(TPacket packet, OnTokenPacketCallback callback) { if (!TryAssignToken(packet, callback)) { return; } SendAsync(new SendPayload { buffer = PackageTokenPacket(packet), packet = packet }); }
/// <summary> /// Creates a token and stores the callback /// </summary> /// <param name="callback"></param> /// <returns></returns> private bool TryAssignToken(TPacket packet, OnTokenPacketCallback callback) { if (!(packet is ITokenPacket tokenPacket)) { Log.Error($"{packet.GetType().Name} is not an ITokenPacket!"); return(false); } int token = Interlocked.Increment(ref nextToken); tokenCallbacks[token] = callback; tokenPacket.Token = token; return(true); }