Example #1
0
 ReadAlerts()
 {
     std::vector<unsigned char> vch(alert_tests::alertTests, alert_tests::alertTests + sizeof(alert_tests::alertTests));
     CDataStream stream(vch, SER_DISK, CLIENT_VERSION);
     try {
         while (!stream.eof())
         {
             CAlert alert;
             stream >> alert;
             alerts.push_back(alert);
         }
     }
     catch (std::exception) { }
 }
Example #2
0
void BCLog::Logger::ShrinkDebugFile()
{
    // Amount of debug.log to save at end when shrinking (must fit in memory)
    constexpr size_t RECENT_DEBUG_HISTORY_SIZE = 10 * 1000000;

    assert(!m_file_path.empty());

    // Scroll debug.log if it's getting too big
    FILE* file = fsbridge::fopen(m_file_path, "r");

    // Special files (e.g. device nodes) may not have a size.
    size_t log_size = 0;
    try {
        log_size = fs::file_size(m_file_path);
    } catch (boost::filesystem::filesystem_error &) {}

    // If debug.log file is more than 10% bigger the RECENT_DEBUG_HISTORY_SIZE
    // trim it down by saving only the last RECENT_DEBUG_HISTORY_SIZE bytes
    if (file && log_size > 11 * (RECENT_DEBUG_HISTORY_SIZE / 10))
    {
        // Restart the file with some of the end
        std::vector<char> vch(RECENT_DEBUG_HISTORY_SIZE, 0);
        if (fseek(file, -((long)vch.size()), SEEK_END)) {
            LogPrintf("Failed to shrink debug log file: fseek(...) failed\n");
            fclose(file);
            return;
        }
        int nBytes = fread(vch.data(), 1, vch.size(), file);
        fclose(file);

        file = fsbridge::fopen(m_file_path, "w");
        if (file)
        {
            fwrite(vch.data(), 1, nBytes, file);
            fclose(file);
        }
    }
    else if (file != nullptr)
        fclose(file);
}
TableCursorKey::TableCursorKey(const KeyFileDefinition &keydef, const Tuple *keytuple, UINT fieldCount, RelationType relop) : m_keydef(keydef) {
  m_fieldCount = fieldCount;
  m_key.init();
  m_relop = relop;
  if(relop == RELOP_FALSE || relop == RELOP_TRUE) return;
  if(relop == RELOP_NQ) {
    m_relop = RELOP_TRUE;
    m_fieldCount = 0;
    return;
  }
  if(fieldCount == 0) {
    return;
  }
  if(keytuple == NULL) {
    throwSqlError(SQL_FATAL_ERROR,_T("TableCursorKey:No Tuple specified but field = %d"),fieldCount);
  }
  const Tuple &tuple = *keytuple;
  if(fieldCount > tuple.size()) {
    throwSqlError(SQL_FATAL_ERROR,_T("TableCursorKey:invalid fieldCount (=%d) specified. Tuple.size = %zd")
                                 ,fieldCount,tuple.size());
  }
  for(UINT i = 0; i < fieldCount; i++) {
    DbFieldType tupleType = tuple[i].getType();
    DbFieldType keyType = keydef.getFieldDef(i).getType();

    if(!isCompatibleType(keyType,tupleType)) {
       throwSqlError(SQL_TYPEMISMATCH,_T("Incompatible types in keydefinition(%s) and tupledefinition(%s)")
                     ,getTypeString(keyType)
                     ,getTypeString(tupleType));
    }

    const TupleField &tupField = tuple[i];
    switch(getMainType(tupleType)) {
    case MAINTYPE_NUMERIC :
      { if(!tupField.isDefined()) {
          setUndefinedField(i);
          return;
        }
        double d;
        tupField.get(d);
        if(putField(i,d)) return;
        break;
      }

    case MAINTYPE_STRING  :
      { if(!tupField.isDefined()) {
          setUndefinedField(i);
          return;
        }
        String str;
        tupField.get(str);
        switch(getMainType(keyType)) {
        case MAINTYPE_STRING:
          if(putField(i,str)) return;
          break;
        case MAINTYPE_VARCHAR:
          { varchar vch(str.cstr());
            if(putField(i,vch)) return;
          }
        }
      }
      break;

    case MAINTYPE_VARCHAR :
      { if(!tupField.isDefined()) {
          setUndefinedField(i);
          return;
        }
        varchar vch;
        tupField.get(vch);

        switch(getMainType(keyType)) {
        case MAINTYPE_STRING:
          { String    str((TCHAR*)vch.data());
            if(putField(i,str)) return;
            break;
          }
        case MAINTYPE_VARCHAR:
          if(putField(i,vch)) return;
          break;
        }
      }
      break;

    case MAINTYPE_DATE    :
      { if(!tupField.isDefined()) {
          setUndefinedField(i);
          return;
        }
        Date d;
        tupField.get(d);
        keydef.put(m_key, i, d);
      }
      break;

    case MAINTYPE_TIME    :
      { if(!tupField.isDefined()) {
          setUndefinedField(i);
          return;
        }
        Time d;
        tupField.get(d);
        keydef.put(m_key, i, d);
      }
      break;

    case MAINTYPE_TIMESTAMP:
      { if(!tupField.isDefined()) {
          setUndefinedField(i);
          return;
        }
        Timestamp d;
        tupField.get(d);
        keydef.put(m_key, i, d);
      }
      break;

    default:
      throwSqlError(SQL_FATAL_ERROR,_T("TableCursorKey:Invalid DbMainType :%d")
                                   ,getMainType(tupleType));
      break;
    }
  }
}
Example #4
0
 std::string CBase58Data::ToString() const
 {
     std::vector<unsigned char> vch(1, nVersion);
     vch.insert(vch.end(), vchData.begin(), vchData.end());
     return EncodeBase58Check(vch);
 }