private async Task <bool> InternalInitialize(ServerSettings serverSettings, bool throwError, IServiceProxyLogger logger, SourceLevels logLevel = SourceLevels.Error) #endif { #if DOTNET4 lock (Instance._syncLock) #else using (await _asyncLock.LockAsync().ConfigureAwait(false)) #endif { ServerSettings previousServerSettings = _serverSettings; bool previousIsInitialized = _isInitialized; IServiceProxyLogger previousLogger = _logger; try { _isInitialized = false; _serverSettings = serverSettings; _logger = logger ?? new DefaultLogger(); WakeOnLan.EnsureServerAwake(serverSettings); DateTime firstTryTime = DateTime.Now; for (; ;) { try { #if DOTNET4 PingAndCheckServer(serverSettings).Wait(); #else await PingAndCheckServer(serverSettings).ConfigureAwait(false); #endif break; } catch { TimeSpan span = DateTime.Now - firstTryTime; if (!serverSettings.WakeOnLan.Enabled || span.TotalSeconds >= serverSettings.WakeOnLan.TimeoutSeconds) { throw; } System.Threading.Thread.Sleep(1000); } } } catch { _serverSettings = previousServerSettings; _logger = previousLogger; _isInitialized = previousIsInitialized; if (!throwError) { return(false); } throw; } ResetProxies(); _isInitialized = true; return(true); } }
/// <summary> /// Initialize the proxies for the given server settings. /// </summary> /// <param name="serverSettings">Where to locate the ARGUS TV Scheduler service.</param> /// <param name="throwError">If set to true an exception may be thrown, if false any errors will be swallowed.</param> /// <param name="logger">An optional logger that should be thread-safe and that will be used to log any errors that occur in the proxy.</param> /// <param name="logLevel">The optional logging level, currently ignored and always set to the default of Error.</param> /// <returns>If throwError was false, a boolean indicating success or failure.</returns> public static async Task <bool> InitializeAsync(ServerSettings serverSettings, bool throwError = true, IServiceProxyLogger logger = null, SourceLevels logLevel = SourceLevels.Error) { return(await Proxies.Instance.InternalInitialize(serverSettings, throwError, logger, logLevel).ConfigureAwait(false)); }
private bool InternalInitialize(ServerSettings serverSettings, bool throwError, IServiceProxyLogger logger, SourceLevels logLevel = SourceLevels.Error)
/// <summary> /// Initialize the proxies for the given server settings. /// </summary> /// <param name="serverSettings">Where to locate the ARGUS TV Scheduler service.</param> /// <param name="throwError">If set to true an exception may be thrown, if false any errors will be swallowed.</param> /// <param name="logger">An optional logger that should be thread-safe and that will be used to log any errors that occur in the proxy.</param> /// <param name="logLevel">The optional logging level, currently ignored and always set to the default of Error.</param> /// <returns>If throwError was false, a boolean indicating success or failure.</returns> public static bool Initialize(ServerSettings serverSettings, bool throwError = true, IServiceProxyLogger logger = null, SourceLevels logLevel = SourceLevels.Error) { #if DOTNET4 return(Proxies.Instance.InternalInitialize(serverSettings, throwError, logger, logLevel)); #else return(Proxies.Instance.InternalInitialize(serverSettings, throwError, logger, logLevel).Result); #endif }
private async Task<bool> InternalInitialize(ServerSettings serverSettings, bool throwError, IServiceProxyLogger logger, SourceLevels logLevel = SourceLevels.Error) #endif { #if DOTNET4 lock (Instance._syncLock) #else using (await _asyncLock.LockAsync().ConfigureAwait(false)) #endif { ServerSettings previousServerSettings = _serverSettings; bool previousIsInitialized = _isInitialized; IServiceProxyLogger previousLogger = _logger; try { _isInitialized = false; _serverSettings = serverSettings; _logger = logger ?? new DefaultLogger(); WakeOnLan.EnsureServerAwake(serverSettings); DateTime firstTryTime = DateTime.Now; for (; ; ) { try { #if DOTNET4 PingAndCheckServer(serverSettings).Wait(); #else await PingAndCheckServer(serverSettings).ConfigureAwait(false); #endif break; } catch { TimeSpan span = DateTime.Now - firstTryTime; if (!serverSettings.WakeOnLan.Enabled || span.TotalSeconds >= serverSettings.WakeOnLan.TimeoutSeconds) { throw; } System.Threading.Thread.Sleep(1000); } } } catch { _serverSettings = previousServerSettings; _logger = previousLogger; _isInitialized = previousIsInitialized; if (!throwError) { return false; } throw; } ResetProxies(); _isInitialized = true; return true; } }
/// <summary> /// Initialize the proxies for the given server settings. /// </summary> /// <param name="serverSettings">Where to locate the ARGUS TV Scheduler service.</param> /// <param name="throwError">If set to true an exception may be thrown, if false any errors will be swallowed.</param> /// <param name="logger">An optional logger that should be thread-safe and that will be used to log any errors that occur in the proxy.</param> /// <param name="logLevel">The optional logging level, currently ignored and always set to the default of Error.</param> /// <returns>If throwError was false, a boolean indicating success or failure.</returns> public static async Task<bool> InitializeAsync(ServerSettings serverSettings, bool throwError = true, IServiceProxyLogger logger = null, SourceLevels logLevel = SourceLevels.Error) { return await Proxies.Instance.InternalInitialize(serverSettings, throwError, logger, logLevel).ConfigureAwait(false); }
/// <summary> /// Initialize the proxies for the given server settings. /// </summary> /// <param name="serverSettings">Where to locate the ARGUS TV Scheduler service.</param> /// <param name="throwError">If set to true an exception may be thrown, if false any errors will be swallowed.</param> /// <param name="logger">An optional logger that should be thread-safe and that will be used to log any errors that occur in the proxy.</param> /// <param name="logLevel">The optional logging level, currently ignored and always set to the default of Error.</param> /// <returns>If throwError was false, a boolean indicating success or failure.</returns> public static bool Initialize(ServerSettings serverSettings, bool throwError = true, IServiceProxyLogger logger = null, SourceLevels logLevel = SourceLevels.Error) { #if DOTNET4 return Proxies.Instance.InternalInitialize(serverSettings, throwError, logger, logLevel); #else return Proxies.Instance.InternalInitialize(serverSettings, throwError, logger, logLevel).Result; #endif }