/// <summary> /// データ送信時に呼ばれます。(継承用) /// </summary> protected virtual void OnSent(DataEventArgs e) { }
/// <summary> /// データの送信終了後に呼び出されます。 /// </summary> private void RaiseSent(SendData sendData, Exception error) { // TODO: var e = new DataEventArgs( null, /*(sendData != null ? sendData.Buffer : null)*/ error); // 継承メソッドを呼びます。 Util.SafeCall(() => OnSent(e)); // eventを呼びます。 this.Sent.SafeRaiseEvent(this, e); }
/// <summary> /// データ受信時に呼ばれます。 /// </summary> protected void RaiseReceived(byte[] data, int length, Exception error) { var e = new DataEventArgs(data, length, error); // 継承メソッドを呼びます。 Util.SafeCall(() => OnReceived(e)); // eventを呼びます。 var handler = Received; if (handler != null) { Util.SafeCall(() => handler(this, e)); } }
/// <summary> /// データ受信時に呼ばれます。(継承用) /// </summary> protected virtual void OnReceived(DataEventArgs e) { }
/// <summary> /// データ受信時にコールバックされます。 /// </summary> private void connection_Received(object sender, DataEventArgs e) { if (e.Error != null) { Log.ErrorException(e.Error, "評価値サーバーからデータの受信に失敗しました。"); return; } try { this.reader.Write(e.Data, 0, e.DataLength); // コマンド行は'\0'で区切られています。 var data = this.reader.ReadUntil((byte)'\0'); if (data == null) { return; } var str = Encoding.UTF8.GetString(data); if (string.IsNullOrEmpty(str)) { return; } // 各コマンドをパースします。 var list = ParseCommand(str); if (!list.Any()) { return; } HandleCommand(list[0], list.Take(1).ToList()); } catch (Exception ex) { Util.ThrowIfFatal(ex); Log.ErrorException(ex, "評価値データの取得に失敗しました。"); } }