private void ConnectToHub() { try { hubClient = hubFactory.CreateConnection(); hubClient.MessageArrived += ClientInvokation; hubClient.OperationalChanged += ConnectedChanges; if (initCalled) { hubClient.Initialize(); } } catch (Exception ex) { LogEnvironment.LogEvent($"Error connecting to hub: {ex.OutlineException()}", LogSeverity.Warning); throw; } finally { if (!hubClient.Operational && initCalled) { reconnector.Change(reconnectTimeout, reconnectTimeout); } else { reconnector.Change(Timeout.Infinite, Timeout.Infinite); } } }
/// <summary> /// Re-Initializes the client connection /// </summary> private void ReConnectClient() { connection = connector.CreateConnection(); if (useEvents) { connection.MessageArrived += ProcessMessage; connection.OperationalChanged += ConnectivityChanged; } if (initCalled) { connection.Initialize(); connected = connection.Operational; } }
/// <summary> /// Tests the connection to the given target-proxy object /// </summary> /// <returns>a value indicating whether the connection is OK</returns> protected override bool Test() { if (connected || !initCalled) { if (!connection.Initialized) { try { connection.Initialize(); if (isBidirectional != IsBidirectional) { throw new Exception("Failed to Register return-channel. Check permissions on server."); } } finally { initCalled = true; } } if (!connection.Operational) { ConnectivityChanged(null, null); return(connected = false); } return(connected = connection.DiscoverService(targetService)); } else { try { ReConnectClient(); //return Test(); } catch { connection?.Dispose(); connection = null; connected = false; } } return(false); }
/// <summary> /// Initializes this object to act as a ipc service /// </summary> protected override void ServiceInit() { if (!initCalled) { try { hubClient.Initialize(); if (!hubClient.Operational) { reconnector.Change(reconnectTimeout, reconnectTimeout); } } catch (Exception ex) { LogEnvironment.LogEvent($"Error connecting to hub: {ex.OutlineException()}", LogSeverity.Warning); reconnector.Change(reconnectTimeout, reconnectTimeout); } finally { initCalled = true; } } }