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) { } }
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; } } }
std::string CBase58Data::ToString() const { std::vector<unsigned char> vch(1, nVersion); vch.insert(vch.end(), vchData.begin(), vchData.end()); return EncodeBase58Check(vch); }