private void SendWriter(ExtendedBinaryWriter writer) { writer?.Flush(); var fullUri = new Uri(_uri, "diag?sid=" + _sessionId + (_contextName != null ? "&ctx=" + _contextName : "")); var binaryContent = writer != null ? (writer.BaseStream as MemoryStream).ToArray() : Array.Empty <byte>(); using (var content = new ByteArrayContent(binaryContent)) { try { var response = _client.PostAsync(fullUri, content).Result; var responseBody = response.Content.ReadAsStringAsync().Result; if (responseBody != "ACK") { _communicationErrorCount++; } } catch (Exception) { _communicationErrorCount++; } } writer?.BaseStream.Dispose(); writer?.Dispose(); }
public void Write(string name, string bases, int seqOffset = 0) { _writer.Flush(); long position = _stream.Position; _refSeqNames.Add(name); _refSeqIndex.Add(new SequenceIndexEntry { NumBases = bases.Length, FileOffset = position, SequenceOffset = seqOffset }); _sequenceCompressor.Compress(bases, _twoBitSequence); // sort the masked intervals var sortedMaskedIntervals = _twoBitSequence.MaskedIntervals.OrderBy(x => x.Begin).ThenBy(x => x.End).ToList(); _refSeqMaskedIntervals.Add(sortedMaskedIntervals); _writer.Write(_twoBitSequence.Buffer, 0, _twoBitSequence.NumBufferBytes); }
/// <summary> /// protected implementation of Dispose pattern. /// </summary> private void Dispose(bool disposing) { if (disposing) { // write a negative length _writer.WriteOpt(-1); // write the intervals WriteSupplementaryIntervals(); // write the guard integer _writer.Flush(); _eofOffset = _stream.Position; _writer.Write(SupplementaryAnnotationCommon.GuardInt); // update the offsets in the header _stream.Position = _offsetHeader; _writer.Write(_dataSourceVersionsOffset); _writer.Write(_dataOffset); _writer.Write(_intervalOffset); _writer.Write(_eofOffset); // close the file streams _writer.Dispose(); _stream.Dispose(); _index.Write(_saPath + ".idx", _currentRefSeq); } // reset all the class variables _stream = null; _dataSourceVersionsOffset = 0; _dataOffset = 0; _eofOffset = 0; _offsetHeader = 0; _intervalOffset = 0; _index = null; }
internal void Write(List <Creation.ReferenceSequence> referenceSequences) { _writer.Flush(); long indexOffset = _stream.Position; int indexSize = 8 + IndexEntry.Size * referenceSequences.Count; var buffers = new List <ReferenceBuffer>(referenceSequences.Count); ushort refIndex = 0; foreach (var referenceSequence in referenceSequences) { buffers.Add(referenceSequence.GetReferenceBuffer(refIndex)); refIndex++; } IndexEntry[] index = CreateIndex(buffers, indexOffset, indexSize); WriteIndex(index); WriteReferenceBuffers(buffers); }
public static byte[] Compress(byte[] uncompressedData) { using (var outputMemoryStream = new MemoryStream()) { using (var output = new ExtendedBinaryWriter(outputMemoryStream)) { var pos = 0; var chunkCount = (int)(uncompressedData.Length / (double)CHUNK_SIZE_UNC_MAX); while (pos < uncompressedData.Length) { var data = CompressChunk(uncompressedData, ref pos); output.Write((ushort)(data.Length + 2)); output.Write(data); output.Write((byte)chunkCount); chunkCount--; } output.Flush(); } return(outputMemoryStream.ToArray()); } }