Example #1
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: @Override public void close() throws java.io.IOException
            public override void close()
            {
                // EOF marker:
                try
                {
                    @out.WriteVInt(0);
                    CodecUtil.WriteFooter(@out);
                }
                finally
                {
                    @out.close();
                }
            }
Example #2
0
        public override void close()
        {
            _fileMutex.WaitOne();
            try
            {
                string fileName = _name;

                // make sure it's all written out
                _indexOutput.flush();

                long originalLength = _indexOutput.length();
                _indexOutput.close();

                Stream blobStream = new StreamInput(CacheDirectory.openInput(fileName, IOContext.DEFAULT));

                try
                {
                    // push the blobStream up to the cloud
                    _blob.UploadFromStream(blobStream);

                    // set the metadata with the original index file properties
                    _blob.Metadata["CachedLength"] = originalLength.ToString(CultureInfo.InvariantCulture);
                    _blob.SetMetadata();

                    Debug.WriteLine("PUT {1} bytes to {0} in cloud", _name, blobStream.Length);
                }
                finally
                {
                    blobStream.Dispose();
                }

                // clean up
                _indexOutput = null;
                _blob        = null;
                GC.SuppressFinalize(this);
            }
            finally
            {
                _fileMutex.ReleaseMutex();
            }
        }
Example #3
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: @Override public void write(store.Directory dir, index.SegmentInfo si, index.FieldInfos fis, store.IOContext ioContext) throws java.io.IOException
        public override void write(Directory dir, SegmentInfo si, FieldInfos fis, IOContext ioContext)
        {
            string segFileName = IndexFileNames.segmentFileName(si.name, "", SimpleTextSegmentInfoFormat.SI_EXTENSION);

            si.addFile(segFileName);

            bool        success = false;
            IndexOutput output  = dir.createOutput(segFileName, ioContext);

            try
            {
                BytesRef scratch = new BytesRef();

                SimpleTextUtil.write(output, SI_VERSION);
                SimpleTextUtil.write(output, si.Version, scratch);
                SimpleTextUtil.WriteNewline(output);

                SimpleTextUtil.write(output, SI_DOCCOUNT);
                SimpleTextUtil.write(output, Convert.ToString(si.DocCount), scratch);
                SimpleTextUtil.WriteNewline(output);

                SimpleTextUtil.write(output, SI_USECOMPOUND);
                SimpleTextUtil.write(output, Convert.ToString(si.UseCompoundFile), scratch);
                SimpleTextUtil.WriteNewline(output);

                IDictionary <string, string> diagnostics = si.Diagnostics;
                int numDiagnostics = diagnostics == null ? 0 : diagnostics.Count;
                SimpleTextUtil.write(output, SI_NUM_DIAG);
                SimpleTextUtil.write(output, Convert.ToString(numDiagnostics), scratch);
                SimpleTextUtil.WriteNewline(output);

                if (numDiagnostics > 0)
                {
                    foreach (KeyValuePair <string, string> diagEntry in diagnostics.SetOfKeyValuePairs())
                    {
                        SimpleTextUtil.write(output, SI_DIAG_KEY);
                        SimpleTextUtil.write(output, diagEntry.Key, scratch);
                        SimpleTextUtil.WriteNewline(output);

                        SimpleTextUtil.write(output, SI_DIAG_VALUE);
                        SimpleTextUtil.write(output, diagEntry.Value, scratch);
                        SimpleTextUtil.WriteNewline(output);
                    }
                }

                HashSet <string> files = si.files();
                int numFiles           = files == null ? 0 : files.Count;
                SimpleTextUtil.write(output, SI_NUM_FILES);
                SimpleTextUtil.write(output, Convert.ToString(numFiles), scratch);
                SimpleTextUtil.WriteNewline(output);

                if (numFiles > 0)
                {
                    foreach (string fileName in files)
                    {
                        SimpleTextUtil.write(output, SI_FILE);
                        SimpleTextUtil.write(output, fileName, scratch);
                        SimpleTextUtil.WriteNewline(output);
                    }
                }

                SimpleTextUtil.WriteChecksum(output, scratch);
                success = true;
            }
            finally
            {
                if (!success)
                {
                    IOUtils.closeWhileHandlingException(output);
                    try
                    {
                        dir.deleteFile(segFileName);
                    }
                    catch (Exception)
                    {
                    }
                }
                else
                {
                    output.close();
                }
            }
        }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: @Override public void write(store.Directory directory, String segmentName, String segmentSuffix, index.FieldInfos infos, store.IOContext context) throws java.io.IOException
        public override void write(Directory directory, string segmentName, string segmentSuffix, FieldInfos infos, IOContext context)
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final String fileName = index.IndexFileNames.segmentFileName(segmentName, segmentSuffix, FIELD_INFOS_EXTENSION);
            string      fileName = IndexFileNames.segmentFileName(segmentName, segmentSuffix, FIELD_INFOS_EXTENSION);
            IndexOutput @out     = directory.createOutput(fileName, context);
            BytesRef    scratch  = new BytesRef();
            bool        success  = false;

            try
            {
                SimpleTextUtil.write(@out, NUMFIELDS);
                SimpleTextUtil.write(@out, Convert.ToString(infos.size()), scratch);
                SimpleTextUtil.WriteNewline(@out);

                foreach (FieldInfo fi in infos)
                {
                    SimpleTextUtil.write(@out, NAME);
                    SimpleTextUtil.write(@out, fi.name, scratch);
                    SimpleTextUtil.WriteNewline(@out);

                    SimpleTextUtil.write(@out, NUMBER);
                    SimpleTextUtil.write(@out, Convert.ToString(fi.number), scratch);
                    SimpleTextUtil.WriteNewline(@out);

                    SimpleTextUtil.write(@out, ISINDEXED);
                    SimpleTextUtil.write(@out, Convert.ToString(fi.Indexed), scratch);
                    SimpleTextUtil.WriteNewline(@out);

                    if (fi.Indexed)
                    {
                        Debug.Assert(fi.IndexOptions.compareTo(FieldInfo.IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) >= 0 || !fi.hasPayloads());
                        SimpleTextUtil.write(@out, INDEXOPTIONS);
                        SimpleTextUtil.write(@out, fi.IndexOptions.ToString(), scratch);
                        SimpleTextUtil.WriteNewline(@out);
                    }

                    SimpleTextUtil.write(@out, STORETV);
                    SimpleTextUtil.write(@out, Convert.ToString(fi.hasVectors()), scratch);
                    SimpleTextUtil.WriteNewline(@out);

                    SimpleTextUtil.write(@out, PAYLOADS);
                    SimpleTextUtil.write(@out, Convert.ToString(fi.hasPayloads()), scratch);
                    SimpleTextUtil.WriteNewline(@out);

                    SimpleTextUtil.write(@out, NORMS);
                    SimpleTextUtil.write(@out, Convert.ToString(!fi.omitsNorms()), scratch);
                    SimpleTextUtil.WriteNewline(@out);

                    SimpleTextUtil.write(@out, NORMS_TYPE);
                    SimpleTextUtil.write(@out, getDocValuesType(fi.NormType), scratch);
                    SimpleTextUtil.WriteNewline(@out);

                    SimpleTextUtil.write(@out, DOCVALUES);
                    SimpleTextUtil.write(@out, getDocValuesType(fi.DocValuesType), scratch);
                    SimpleTextUtil.WriteNewline(@out);

                    SimpleTextUtil.write(@out, DOCVALUES_GEN);
                    SimpleTextUtil.write(@out, Convert.ToString(fi.DocValuesGen), scratch);
                    SimpleTextUtil.WriteNewline(@out);

                    IDictionary <string, string> atts = fi.attributes();
                    int numAtts = atts == null ? 0 : atts.Count;
                    SimpleTextUtil.write(@out, NUM_ATTS);
                    SimpleTextUtil.write(@out, Convert.ToString(numAtts), scratch);
                    SimpleTextUtil.WriteNewline(@out);

                    if (numAtts > 0)
                    {
                        foreach (KeyValuePair <string, string> entry in atts.SetOfKeyValuePairs())
                        {
                            SimpleTextUtil.write(@out, ATT_KEY);
                            SimpleTextUtil.write(@out, entry.Key, scratch);
                            SimpleTextUtil.WriteNewline(@out);

                            SimpleTextUtil.write(@out, ATT_VALUE);
                            SimpleTextUtil.write(@out, entry.Value, scratch);
                            SimpleTextUtil.WriteNewline(@out);
                        }
                    }
                }
                SimpleTextUtil.WriteChecksum(@out, scratch);
                success = true;
            }
            finally
            {
                if (success)
                {
                    @out.close();
                }
                else
                {
                    IOUtils.closeWhileHandlingException(@out);
                }
            }
        }