// // 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); } } }