JD2022-TU1/main/tools/extern/Bloomberg/Code/Libraries/Bloomberg.Message/Components/FileDataSender.cs

40 lines
1.2 KiB
C#

using System;
using System.IO;
using Bloomberg.Message.Reader;
namespace Bloomberg.Message.Components
{
public class FileDataSender : DataSender
{
private FileStream _fileStream;
public override void OpenStream(DataSenderConfig config)
{
Directory.CreateDirectory(config.Directory);
_fileStream = new FileStream(Path.Combine(config.Directory, config.Filename), FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
}
public override bool SendOnStream(Stream stream, long sizeToWrite)
{
if (_fileStream == null) throw new NullReferenceException("The file was not initialized using OpenStream.");
ReaderHelper.CopyStream(stream, _fileStream, sizeToWrite);
return true;
}
public override void SendOnStream(byte[] dataToSend)
{
if (_fileStream == null) throw new NullReferenceException("The file was not initialized using OpenStream.");
_fileStream.Write(dataToSend, 0, dataToSend.Length);
}
public override void CloseStream()
{
if (_fileStream != null)
_fileStream.Close();
}
}
}