/// <summary> /// Builds the data frame. /// </summary> /// <param name="stream">The stream.</param> /// <param name="data">The data.</param> /// <param name="final">if set to <c>true</c> than this frame is final for the stream.</param> /// <returns>returns DataFrame.</returns> public DataFrame BuildDataFrame(SMStream stream, SMData data, bool final) { DataFrame frame = BuildDataFrame(stream.StreamId, data); frame.IsFinal = final; return(frame); }
/// <summary> /// Builds the data frame. /// </summary> /// <param name="streamId">The stream id.</param> /// <param name="data">The data.</param> /// <returns>Returns DataFrame.</returns> public DataFrame BuildDataFrame(int streamId, SMData data) { DataFrame frame = new DataFrame { Data = data.Data, StreamId = streamId, Length = data.Data.Length }; return(frame); }
/// <summary> /// Sends the data to the stream. /// </summary> /// <param name="data">The data.</param> /// <param name="isFin">if set to <c>true</c> than this stream will be half-closed.</param> public void SendData(SMData data, bool isFin) { SMData dataFrame; if (Session.IsFlowControlEnabled) { Session.CurrentCreditBalanceToServer -= data.Data.Length; dataFrame = new SMData(data.Data); } else { dataFrame = new SMData(data.Data); } this.protocol.SendData(this, dataFrame, isFin); }
public void SendFrameOnCloseStreamFailure() { Reset(); Uri uri; Uri.TryCreate(Host + Port, UriKind.Absolute, out uri); CreateSession(uri); AttachSessionEvents(_session); _eventRaisedSession.WaitOne(); _eventRaisedSession.Reset(); Check(CheckModes.session); string fileName = FileName; bool isFin = true; SMStream stream = DownloadPath(fileName, isFin); _eventRaisedStream.WaitOne(); _eventRaisedStream.Reset(); Check(CheckModes.stream); if ((stream.State == SMStreamState.HalfClosed) ^ isFin) { Assert.Fail("Incorrect SMStreamState."); } AttachStreamEvents(stream); _eventRaisedStream.Reset(); _eventRaisedStream.WaitOne(); Check(CheckModes.fin); if ((stream.State == SMStreamState.Closed) ^ isFin) { Assert.Fail("Incorrect value Stream.State."); } _isError = false; SMData data = new SMData(new byte[] { 12, 3, 23, 35, 3, 11 }); stream.SendData(data, isFin); _eventRaisedSession.WaitOne(); _eventRaisedSession.Reset(); Assert.IsTrue(_isError); }
/// <summary> /// Sends the data to the stream. /// </summary> /// <param name="data">The data.</param> /// <param name="isFin">if set to <c>true</c> than this stream will be half-closed.</param> public void SendData(SMData data, bool isFin) { this.protocol.SendData(this, data, isFin); }
/// <summary> /// Initializes a new instance of the <see cref="StreamDataEventArgs"/> class. /// </summary> /// <param name="stream">The stream.</param> /// <param name="data">The data.</param> /// <param name="isFin">final flag.</param> public StreamDataEventArgs(SMStream stream, SMData data, bool isFin) : base(stream) { this.Data = data; this.IsFin = isFin; }
/// <summary> /// Builds the data frame. /// </summary> /// <param name="stream">The stream.</param> /// <param name="data">The data.</param> /// <returns>Returns DataFrame.</returns> public DataFrame BuildDataFrame(SMStream stream, SMData data) { return this.BuildDataFrame(stream, data, false); }
/// <summary> /// Builds the data frame. /// </summary> /// <param name="streamId">The stream id.</param> /// <param name="data">The data.</param> /// <returns>Returns DataFrame.</returns> public DataFrame BuildDataFrame(int streamId, SMData data) { DataFrame frame = new DataFrame { Data = data.Data, StreamId = streamId, Length = data.Data.Length }; return frame; }
/// <summary> /// Builds the data frame. /// </summary> /// <param name="stream">The stream.</param> /// <param name="data">The data.</param> /// <param name="final">if set to <c>true</c> than this frame is final for the stream.</param> /// <returns>returns DataFrame.</returns> public DataFrame BuildDataFrame(SMStream stream, SMData data, bool final) { DataFrame frame = BuildDataFrame(stream.StreamId, data); frame.IsFinal = final; return frame; }
/// <summary> /// Initializes a new instance of the <see cref="StreamDataEventArgs"/> class. /// </summary> /// <param name="stream">The stream.</param> /// <param name="data">The data.</param> /// <param name="isFin">final flag.</param> public StreamDataEventArgs(SMStream stream, SMData data, bool isFin) : base(stream) { this.Data = data; this.IsFin = isFin; }
/// <summary> /// Sends the data to the stream. /// </summary> /// <param name="data">The data.</param> /// <param name="isFin">if set to <c>true</c> than this stream will be half-closed.</param> public void SendData(SMData data, bool isFin) { SMData dataFrame; if (Session.IsFlowControlEnabled) { Session.CurrentCreditBalanceToServer -= data.Data.Length; dataFrame = new SMData(data.Data); } else { dataFrame = new SMData(data.Data); } this.protocol.SendData(this, dataFrame, isFin); }
/// <summary> /// Sends the data. /// </summary> /// <param name="stream">The stream.</param> /// <param name="data">The data.</param> /// <param name="isFin">FIN flag.</param> public void SendData(SMStream stream, SMData data, bool isFin) { this.SendFrame(stream, this.builder.BuildDataFrame(stream, data, isFin)); }
public void SendFrameOnCloseStreamFailure() { ManualResetEvent eventRaised = new ManualResetEvent(false); Uri uri; Uri.TryCreate(Host + Port, UriKind.Absolute, out uri); CreateSession(uri); bool isError = false; string errorMessage = String.Empty; bool isOpenSession = false; _session.OnOpen += (s, e) => { isOpenSession = true; eventRaised.Set(); }; _session.OnError += (s, e) => { isError = true; errorMessage = "Internal session error."; eventRaised.Set(); }; _session.OnStreamOpened += (s, e) => eventRaised.Set(); eventRaised.WaitOne(); if (isError) Assert.Fail(errorMessage); if (!isOpenSession) Assert.Fail("Could not open session."); eventRaised.Reset(); string fileName = FileName; bool isReceived = false; bool isFin = true; SMStream stream = DownloadPath(fileName, isFin); eventRaised.WaitOne(); eventRaised.Reset(); if ((stream.State == SMStreamState.HalfClosed) ^ isFin) Assert.Fail("Incorrect SMStreamState."); stream.OnRSTReceived += (s, e) => eventRaised.Set(); stream.OnDataReceived += (s, e) => { string file = Path.GetFileName(e.Stream.Headers[SMHeaders.Path]); using (var fs = new FileStream(file, FileMode.Create)) { fs.Write(e.Data.Data, 0, e.Data.Data.Length); } string text = e.Data.AsUtf8Text(); isReceived = !string.IsNullOrEmpty(text); }; bool isClose = false; stream.OnClose += (s, e) => { isClose = true; eventRaised.Set(); }; _session.OnError += (s, e) => { isError = true; eventRaised.Set(); }; eventRaised.Reset(); eventRaised.WaitOne(); if (isError) Assert.Fail(errorMessage); if ((stream.State == SMStreamState.Closed) ^ isFin) Assert.Fail("Incorrect value Stream.State."); if (!isClose) Assert.Fail("Could not close stream."); isError = false; SMData data = new SMData(new byte[] { 12, 3, 23, 35, 3, 11 }); eventRaised.Reset(); stream.SendData(data, isFin); eventRaised.WaitOne(); Assert.IsTrue(isError); }
/// <summary> /// Builds the data frame. /// </summary> /// <param name="stream">The stream.</param> /// <param name="data">The data.</param> /// <returns>Returns DataFrame.</returns> public DataFrame BuildDataFrame(SMStream stream, SMData data) { return(this.BuildDataFrame(stream, data, false)); }