//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
using System.IO;
namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
{
///
/// Factory that creates file reader/writers that process rows in an internal, non-human readable file format
///
public class ServiceBufferFileStreamFactory : IFileStreamFactory
{
///
/// Creates a new temporary file
///
/// The name of the temporary file
public string CreateFile()
{
return Path.GetTempFileName();
}
///
/// Creates a new for reading values back from
/// an SSMS formatted buffer file
///
/// The file to read values from
/// A
public IFileStreamReader GetReader(string fileName)
{
return new ServiceBufferFileStreamReader(new FileStream(fileName, FileMode.Open, FileAccess.Read));
}
///
/// Creates a new for writing values out to an
/// SSMS formatted buffer file
///
/// The file to write values to
/// The maximum number of characters to store from long text fields
/// The maximum number of characters to store from xml fields
/// A
public IFileStreamWriter GetWriter(string fileName, int maxCharsToStore, int maxXmlCharsToStore)
{
return new ServiceBufferFileStreamWriter(new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite), maxCharsToStore, maxXmlCharsToStore);
}
///
/// Disposes of a file created via this factory
///
/// The file to dispose of
public void DisposeFile(string fileName)
{
FileUtils.SafeFileDelete(fileName);
}
}
}