public async Task Start() { try { await Stop(); if (_service != null) { var result = await _service.Start(_serviceConfigString, this); if (result.IsOK) { Service = _service; ServiceInfo = new ServiceInfo(result.Message, result.UserCode); UriHandler = Service as IServiceUriDataHandler; BlockReceiver = Service as IServiceBlockHandler; ErrorReportReceiver = Service as IServiceErrorReportsHandler; ClientMessageReceiver = Service as IServiceRemoteMessageHandler; PushReceiver = Service as IServicePushHandler; Log.Info($"Starting service {_service.GetType().Name} for chainid {ChainId}: {result.Message} (v {result.UserCode})."); } else { Log.Warn($"Starting service {_service.GetType().Name} failed, {result.Result}: {result.Message} (v {result.UserCode})."); } } } catch (Exception ex) { Log.Warn($"Starting service {_service.GetType().Name} failed.", this); Log.HandleException(ex, this); } }
public async Task Stop() { ServiceInfo = null; if (_service != null) { Service = null; UriHandler = null; BlockReceiver = null; ErrorReportReceiver = null; ClientMessageReceiver = null; PushReceiver = null; try { await _service.Stop(); } catch (Exception ex) { Log.HandleException(ex, Service as ILogger); } } }