/// <summary> /// Get client channel remote status /// </summary> /// <param name="channelId"></param> /// <returns></returns> public async Task <bool?> GetChannelRemoteStatusValue(string channelId) { // status service not supported if (_statusService == null) { GetChannelInvoker(channelId).SetAplOnline(); return(await Task.FromResult <bool?>(null)); } // make remote call bool remoteStatus = false; using (var store = new CancellationTokenSource()) { try { store.CancelAfter(5000); var status = await _statusService.CheckStatus(new CheckStatusRequest { ChannelId = channelId }, store.Token); remoteStatus = status?.Status ?? false; } catch (Exception) { } } // set online/offline status if (remoteStatus) { GetChannelInvoker(channelId).SetAplOnline(); } else { GetChannelInvoker(channelId).SetAplOffline(); } // return return(remoteStatus); }