public bool Send(byte[] data) { int length = data.Length; lock (_syncTcp) { if (ConnectionStatus == ConnectionStatusEnum.ConnectedInicialized || ConnectionStatus == ConnectionStatusEnum.ConnectedNotInicialized) { try { _netStream.Write(data, 0, length); return(true); } catch (IOException) //timeout { ConnectionStatus = ConnectionStatusEnum.Disconnected; DisconnectedEvent.Set(); if (AutoReconnect) { Connect(); } } } } return(false); }
private void OnStateChange(Object sender, StateChangeEventArgs e) { Console.WriteLine("FIX session state: " + e.NewState.ToString()); if (e.NewState == SessionState.DISCONNECTED) { DisconnectedEvent.Set(); } }
/// <summary> /// Odesla data a ihned ceka na odpoved. /// </summary> /// <param name="data">Data, ktera se odesilaji.</param> /// <param name="dataLength">Pocet bytu k odeslani.</param> /// <param name="answer">Odpoved</param> /// <param name="answerLength">Pocet bytu odpovedi.</param> /// <param name="log">Moznost definovat log</param> /// <returns>True, pokud odeasli a prijem probehlo.</returns> public bool SendReceive(byte[] data, int dataLength, ref byte[] answer, ref int answerLength, Func <byte[], int, bool> continueRead = null) { if (continueRead == null) { continueRead = (read, readLenght) => { return(false); }; } lock (_syncTcp) { if (ConnectionStatus == ConnectionStatusEnum.ConnectedInicialized || ConnectionStatus == ConnectionStatusEnum.ConnectedNotInicialized) { { try { _netStream.Write(data, 0, dataLength); answerLength = 0; do { answerLength += _netStream.Read(answer, answerLength, answer.Length); } while (continueRead(answer, answerLength)); return(true); } catch (IOException) //timeout { ConnectionStatus = ConnectionStatusEnum.Disconnected; DisconnectedEvent.Set(); if (AutoReconnect) { Connect(); } } } } } return(false); }
/// <summary> /// Precte data ze socketu a vraci je jako pole byte. /// </summary> /// <param name="data">Prectena data</param> /// <param name="length">Pocet byte, ktere byly vycteny.</param> /// <returns>True, pokud byla nejaka data vyctena.</returns> public bool Receive(ref byte[] data, ref int length) { lock (_syncTcp) { if (ConnectionStatus == ConnectionStatusEnum.ConnectedInicialized || ConnectionStatus == ConnectionStatusEnum.ConnectedNotInicialized) { try { length = _netStream.Read(data, 0, data.Length); return(true); } catch (IOException) //timeout { ConnectionStatus = ConnectionStatusEnum.Disconnected; DisconnectedEvent.Set(); if (AutoReconnect) { Connect(); } } } } return(false); }
/// <summary> /// Callback for Disconnected event from HsClient /// Try to reconnect /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void HsClient_Disconnected(object sender, EventArgs e) { Console.WriteLine("HsClient_Disconnected: {0}", ((IScsServiceClient <IHSApplication>)sender).CommunicationState); // Try again DisconnectedEvent.Set(); }