LCOV - code coverage report
Current view: top level - src/leveldb/util - status.cc (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 21 38 55.3 %
Date: 2015-10-12 22:39:14 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       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             : #include <stdio.h>
       6             : #include "port/port.h"
       7             : #include "leveldb/status.h"
       8             : 
       9             : namespace leveldb {
      10             : 
      11       25248 : const char* Status::CopyState(const char* state) {
      12             :   uint32_t size;
      13             :   memcpy(&size, state, sizeof(size));
      14       25248 :   char* result = new char[size + 5];
      15       25248 :   memcpy(result, state, size + 5);
      16       25248 :   return result;
      17             : }
      18             : 
      19       25300 : Status::Status(Code code, const Slice& msg, const Slice& msg2) {
      20       25300 :   assert(code != kOk);
      21       25300 :   const uint32_t len1 = msg.size();
      22       25300 :   const uint32_t len2 = msg2.size();
      23       25300 :   const uint32_t size = len1 + (len2 ? (2 + len2) : 0);
      24       25300 :   char* result = new char[size + 5];
      25             :   memcpy(result, &size, sizeof(size));
      26       25300 :   result[4] = static_cast<char>(code);
      27       25300 :   memcpy(result + 5, msg.data(), len1);
      28       25300 :   if (len2) {
      29         513 :     result[5 + len1] = ':';
      30         513 :     result[6 + len1] = ' ';
      31         513 :     memcpy(result + 7 + len1, msg2.data(), len2);
      32             :   }
      33       25300 :   state_ = result;
      34       25300 : }
      35             : 
      36         115 : std::string Status::ToString() const {
      37         115 :   if (state_ == NULL) {
      38         230 :     return "OK";
      39             :   } else {
      40             :     char tmp[30];
      41             :     const char* type;
      42           0 :     switch (code()) {
      43             :       case kOk:
      44             :         type = "OK";
      45             :         break;
      46             :       case kNotFound:
      47           0 :         type = "NotFound: ";
      48           0 :         break;
      49             :       case kCorruption:
      50           0 :         type = "Corruption: ";
      51           0 :         break;
      52             :       case kNotSupported:
      53           0 :         type = "Not implemented: ";
      54           0 :         break;
      55             :       case kInvalidArgument:
      56           0 :         type = "Invalid argument: ";
      57           0 :         break;
      58             :       case kIOError:
      59           0 :         type = "IO error: ";
      60           0 :         break;
      61             :       default:
      62             :         snprintf(tmp, sizeof(tmp), "Unknown code(%d): ",
      63           0 :                  static_cast<int>(code()));
      64           0 :         type = tmp;
      65           0 :         break;
      66             :     }
      67           0 :     std::string result(type);
      68             :     uint32_t length;
      69           0 :     memcpy(&length, state_, sizeof(length));
      70           0 :     result.append(state_ + 5, length);
      71             :     return result;
      72             :   }
      73             : }
      74             : 
      75             : }  // namespace leveldb

Generated by: LCOV version 1.11