public void WriteElement()

in DataExtraction/SourceGraphExtractionUtils/Utils/ChunkedJsonWriter.cs [49:97]


        public void WriteElement(Action<JsonWriter> writer)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                TextWriter tw = new StreamWriter(ms);
                JsonWriter js = new JsonTextWriter(tw);

                writer(js);
                js.Flush();
                ms.Seek(0, SeekOrigin.Begin);

                using (TextReader sr = new StreamReader(ms))
                {
                    lock (_lock)
                    {
                        if (_textStream == null)
                        {
                            var filename = GetChunkedOutputFilename(_outputFilenameTemplate, NumChunksWrittenSoFar);
                            Console.WriteLine($"Opening output file {filename}.");
                            var fileStream = File.Create(filename);
                            var gzipStream = new GZipStream(fileStream, CompressionMode.Compress, false);
                            _textStream = new StreamWriter(gzipStream);
                            _numElementsWrittenInCurrentChunk = 0;
                            if (!_useJsonlFormat) _textStream.Write('[');
                        }

                        if (_numElementsWrittenInCurrentChunk > 0)
                        {
                            if (_useJsonlFormat)
                            {
                                _textStream.Write('\n');
                            }
                            else
                            {
                                _textStream.Write(',');
                            }
                        }
                        var json = sr.ReadToEnd();
                        _textStream.Write(json);

                        ++_numElementsWrittenInCurrentChunk;
                        if (_numElementsWrittenInCurrentChunk >= _max_elements_per_chunk)
                        {
                            CloseOutputFile();
                        }
                    }
                }
            }
        }