コード例 #1
0
ファイル: keydiff.cpp プロジェクト: AsherBond/HPCC-Platform
 void init (char const * filename, bool overwrite, size32_t _keyedsize, size32_t _rowsize, bool variableWidth, bool quickCompressed, unsigned nodeSize) 
 {
     keyedsize = _keyedsize;
     rowsize = _rowsize;
     reccount = 0;
     keyFile.setown(createIFile(filename));
     if(!overwrite && (keyFile->isFile() != notFound))
         throw MakeStringException(0, "Found preexisting index file %s (overwrite not selected)", filename);
     keyFileIO.setown(keyFile->openShared(IFOcreate, IFSHfull)); // not sure if needs shared here
     if(!keyFileIO)
         throw MakeStringException(0, "Could not write index file %s", filename);
     keyStream.setown(createIOStream(keyFileIO));
     unsigned flags = COL_PREFIX | HTREE_FULLSORT_KEY | HTREE_COMPRESSED_KEY;
     if(variableWidth)
         flags |= HTREE_VARSIZE;
     if(quickCompressed)
         flags |= HTREE_QUICK_COMPRESSED_KEY;
     keyBuilder.setown(createKeyBuilder(keyStream, flags, rowsize, nodeSize, keyedsize, 0)); // MORE - support for sequence other than 0...
 }
コード例 #2
0
 void open(IPartDescriptor &partDesc, bool isTopLevel, bool isVariable)
 {
     StringBuffer partFname;
     getPartFilename(partDesc, 0, partFname);
     bool compress=false;
     OwnedIFileIO iFileIO = createMultipleWrite(this, partDesc, 0, TW_RenameToPrimary, compress, NULL, this, &abortSoon);
     Owned<IFileIOStream> out = createBufferedIOStream(iFileIO);
     ActPrintLog("INDEXWRITE: created fixed output stream %s", partFname.str());
     unsigned flags = COL_PREFIX;
     if (TIWrowcompress & helper->getFlags())
         flags |= HTREE_COMPRESSED_KEY|HTREE_QUICK_COMPRESSED_KEY;
     else if (!(TIWnolzwcompress & helper->getFlags()))
         flags |= HTREE_COMPRESSED_KEY;
     if (!isLocal)
         flags |= HTREE_FULLSORT_KEY;
     if (isVariable)
         flags |= HTREE_VARSIZE;
     buildUserMetadata(metadata);                
     buildLayoutMetadata(metadata);
     unsigned nodeSize = metadata ? metadata->getPropInt("_nodeSize", NODESIZE) : NODESIZE;
     builder.setown(createKeyBuilder(out, flags, maxDiskRecordSize, nodeSize, helper->getKeyedSize(), isTopLevel ? 0 : totalCount));
 }