40 lines
1.2 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|