private BulkOperations DecompressBulkOperations(string compressedOperations)
{
MemoryStream compressedOperationsStream = null;
MemoryStream decompressedOperationsStream = null;
ZlibStream decompressionStream = null;
try
{
byte[] compressedOperationsBytes = Convert.FromBase64String(compressedOperations);
compressedOperationsStream = new MemoryStream(compressedOperationsBytes);
byte[] buffer = new byte[1024];
int numBytesRead = 0;
bool start = true;
decompressedOperationsStream = new MemoryStream();
using (decompressionStream = new ZlibStream(compressedOperationsStream, CompressionMode.Decompress))
{
while (start || numBytesRead > 0)
{
numBytesRead = decompressionStream.Read(buffer, 0, buffer.Length);
if (numBytesRead > 0)
{
decompressedOperationsStream.Write(buffer, 0, numBytesRead);
}
start = false;
}
}
decompressedOperationsStream.Position = 0;
DataContractSerializer deserializer = new DataContractSerializer(typeof(BulkOperations));
BulkOperations operations = deserializer.ReadObject(decompressedOperationsStream) as BulkOperations;
return operations;
}
finally
{
if (decompressedOperationsStream != null)
{
decompressedOperationsStream.Dispose();
decompressedOperationsStream = null;
}
}
}