50 lines
1009 B
C#
50 lines
1009 B
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace skyscraper5.UI.StreamAcquisition
|
|
{
|
|
internal class StreamSourceIoStreamWrapper : StreamSource
|
|
{
|
|
private Stream wrapped;
|
|
|
|
public StreamSourceIoStreamWrapper(Stream wrapped, string name)
|
|
{
|
|
this.wrapped = wrapped;
|
|
this.StreamName = name;
|
|
}
|
|
|
|
public string StreamName { get; private set; }
|
|
|
|
public override string GetSourceName()
|
|
{
|
|
if (string.IsNullOrEmpty(StreamName))
|
|
return base.GetSourceName();
|
|
|
|
return StreamName;
|
|
}
|
|
|
|
protected override void StartSourceEx()
|
|
{
|
|
byte[] buffer = new byte[188];
|
|
int result = 0;
|
|
do
|
|
{
|
|
result = wrapped.Read(buffer, 0, buffer.Length);
|
|
if (result == buffer.Length)
|
|
{
|
|
context.IngestSinglePacket(buffer);
|
|
}
|
|
if (stopRequested)
|
|
{
|
|
base.State = StreamSourceState.StoppedByUser;
|
|
return;
|
|
}
|
|
} while (result == 188);
|
|
base.State = StreamSourceState.Finished;
|
|
}
|
|
}
|
|
}
|