github.com/cellofellow/gopkg@v0.0.0-20140722061823-eec0544a62ad/database/leveldb.chai2010/include/db/log_writer.h (about)

     1  // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style license that can be
     3  // found in the LICENSE file. See the AUTHORS file for names of contributors.
     4  
     5  #ifndef STORAGE_LEVELDB_DB_LOG_WRITER_H_
     6  #define STORAGE_LEVELDB_DB_LOG_WRITER_H_
     7  
     8  #include <stdint.h>
     9  #include "db/log_format.h"
    10  #include "leveldb/slice.h"
    11  #include "leveldb/status.h"
    12  
    13  namespace leveldb {
    14  
    15  class WritableFile;
    16  
    17  namespace log {
    18  
    19  class Writer {
    20   public:
    21    // Create a writer that will append data to "*dest".
    22    // "*dest" must be initially empty.
    23    // "*dest" must remain live while this Writer is in use.
    24    explicit Writer(WritableFile* dest);
    25    ~Writer();
    26  
    27    Status AddRecord(const Slice& slice);
    28  
    29   private:
    30    WritableFile* dest_;
    31    int block_offset_;       // Current offset in block
    32  
    33    // crc32c values for all supported record types.  These are
    34    // pre-computed to reduce the overhead of computing the crc of the
    35    // record type stored in the header.
    36    uint32_t type_crc_[kMaxRecordType + 1];
    37  
    38    Status EmitPhysicalRecord(RecordType type, const char* ptr, size_t length);
    39  
    40    // No copying allowed
    41    Writer(const Writer&);
    42    void operator=(const Writer&);
    43  };
    44  
    45  }  // namespace log
    46  }  // namespace leveldb
    47  
    48  #endif  // STORAGE_LEVELDB_DB_LOG_WRITER_H_