public byte[] Encode(IRemoteEvent <T> obj) { WakeMessagePBuf pbuf = new WakeMessagePBuf(); pbuf.data = _encoder.Encode(obj.Value); pbuf.seq = obj.Sequence; return(pbuf.Serialize()); }
/// <summary> /// Look up the IObserver for the registered IPEndPoint or event type /// and execute the IObserver. /// </summary> /// <param name="transportEvent">The incoming remote event</param> public void OnNext(TransportEvent <IRemoteEvent <T> > transportEvent) { IRemoteEvent <T> remoteEvent = transportEvent.Data; remoteEvent.LocalEndPoint = transportEvent.Link.LocalEndpoint; remoteEvent.RemoteEndPoint = transportEvent.Link.RemoteEndpoint; T value = remoteEvent.Value; bool handled = false; if (_universalObserver != null) { _universalObserver.OnNext(value); handled = true; } if (_remoteMessageUniversalObserver != null) { // IObserver was registered by event type IRemoteIdentifier id = new SocketRemoteIdentifier(remoteEvent.RemoteEndPoint); IRemoteMessage <T> remoteMessage = new DefaultRemoteMessage <T>(id, value); _remoteMessageUniversalObserver.OnNext(remoteMessage); handled = true; } IObserver <T> observer; if (_endpointMap.TryGetValue(remoteEvent.RemoteEndPoint, out observer)) { // IObserver was registered by IPEndpoint observer.OnNext(value); handled = true; } if (!handled) { throw new WakeRuntimeException("Unrecognized Wake RemoteEvent message"); } }
public byte[] Encode(IRemoteEvent <T> obj) { return(_encoder.Encode(obj)); }
/// <summary> /// Writes the class fields. /// </summary> /// <param name="value">The remote event</param> /// <param name="writer">The writer to which to write</param> /// <param name="token">The cancellation token</param> public async Task WriteAsync(IRemoteEvent <T> value, IDataWriter writer, CancellationToken token) { await _codec.WriteAsync(value.Value, writer, token); }
/// <summary> /// Writes the class fields. /// </summary> /// <param name="value">The remote event</param> /// <param name="writer">The writer to which to write</param> public void Write(IRemoteEvent <T> value, IDataWriter writer) { _codec.Write(value.Value, writer); }