private Task <byte[]> OnListen(MethodCall call) { if (_activeSink != null) { try { _handler.OnCancel(null); } catch (Exception e) { TizenLog.Error($"{_channel.Name}: Failed to close existing event stream. {e.Message}"); } } try { _activeSink = new EventSinkImpl(this); _handler.OnListen(call.Arguments, _activeSink); return(Task.FromResult(_channel.Codec.EncodeSuccessEnvelope(null))); } catch (Exception e) { _activeSink = null; TizenLog.Error($"{_channel.Name}: Failed to open event stream. {e.Message}"); return(Task.FromResult(_channel.Codec.EncodeErrorEnvelope("error", e.Message, null))); } }
public override void Run(string[] args) { // Log any unhandled exception. AppDomain.CurrentDomain.UnhandledException += (s, e) => { var exception = e.ExceptionObject as Exception; TizenLog.Error($"Unhandled exception: {exception}"); }; base.Run(args); }
private Task <byte[]> OnCancel(MethodCall call) { if (_activeSink != null) { try { _handler.OnCancel(call.Arguments); return(Task.FromResult(_channel.Codec.EncodeSuccessEnvelope(null))); } catch (Exception e) { TizenLog.Error($"{_channel.Name}: Failed to close event stream. {e.Message}"); return(Task.FromResult(_channel.Codec.EncodeErrorEnvelope("error", e.Message, null))); } } else { return(Task.FromResult(_channel.Codec.EncodeErrorEnvelope("error", "No active stream to cancel.", null))); } }