diff --git a/src/CallRPC.cpp b/src/CallRPC.cpp index 23e776b76..99dabf2fa 100644 --- a/src/CallRPC.cpp +++ b/src/CallRPC.cpp @@ -1,5 +1,4 @@ - #include #include @@ -19,9 +18,7 @@ #include "Config.h" #include "BitcoinUtil.h" -using namespace boost::asio; - -inline bool isSwitchChar(char c) +static inline bool isSwitchChar(char c) { #ifdef __WXMSW__ return c == '-' || c == '/'; @@ -56,13 +53,13 @@ int commandLineRPC(int argc, char *argv[]) try { // Skip switches - while(argc > 1 && isSwitchChar(argv[1][0])) + while ((argc > 1) && isSwitchChar(argv[1][0])) { argc--; argv++; } - if(argc < 2) return(0); + if (argc < 2) return 0; std::string strMethod = argv[1]; @@ -75,22 +72,20 @@ int commandLineRPC(int argc, char *argv[]) Json::Value reply = callRPC(strMethod, params); // Parse reply - Json::Value result=reply.get("result", Json::Value()); - Json::Value error=reply.get("error", Json::Value()); + Json::Value result = reply.get("result", Json::Value()); + Json::Value error = reply.get("error", Json::Value()); - if(result.isString() && result.asString()=="unknown command") + if (result.isString() && (result.asString() == "unknown command")) nRet=1; - if(!error.isNull()) - { - // Error + if (!error.isNull()) + { // Error strPrint = "error: " + error.toStyledString(); int code = error["code"].asInt(); nRet = abs(code); } else - { - // Result + { // Result if (result.isNull()) strPrint = ""; else if (result.isString()) @@ -109,7 +104,7 @@ int commandLineRPC(int argc, char *argv[]) std::cout << "Exception CommandLineRPC()" << std::endl; } - if(strPrint != "") + if (strPrint != "") { std::cout << strPrint << std::endl; } @@ -119,27 +114,24 @@ int commandLineRPC(int argc, char *argv[]) Json::Value callRPC(const std::string& strMethod, const Json::Value& params) { - if(theConfig.RPC_USER == "" && theConfig.RPC_PASSWORD == "") + if (theConfig.RPC_USER.empty() && theConfig.RPC_PASSWORD.empty()) throw std::runtime_error("You must set rpcpassword= in the configuration file" "If the file does not exist, create it with owner-readable-only file permissions."); // Connect to localhost - std::cout << "Connecting to port:" << theConfig.RPC_PORT << std::endl; - ip::tcp::endpoint endpoint(ip::address::from_string(theConfig.RPC_IP), theConfig.RPC_PORT); - ip::tcp::iostream stream; + boost::asio::ip::tcp::endpoint + endpoint(boost::asio::ip::address::from_string(theConfig.RPC_IP), theConfig.RPC_PORT); + boost::asio::ip::tcp::iostream stream; stream.connect(endpoint); - if(stream.fail()) + if (stream.fail()) throw std::runtime_error("couldn't connect to server"); - - // HTTP basic authentication std::string strUserPass64 = EncodeBase64(theConfig.RPC_USER + ":" + theConfig.RPC_PASSWORD); std::map mapRequestHeaders; mapRequestHeaders["Authorization"] = std::string("Basic ") + strUserPass64; - // Send request std::string strRequest = JSONRPCRequest(strMethod, params, Json::Value(1)); std::cout << "send request " << strMethod << " : " << strRequest << std::endl; @@ -154,7 +146,7 @@ Json::Value callRPC(const std::string& strMethod, const Json::Value& params) int nStatus = ReadHTTP(stream, mapHeaders, strReply); if (nStatus == 401) throw std::runtime_error("incorrect rpcuser or rpcpassword (authorization failed)"); - else if (nStatus >= 400 && nStatus != 400 && nStatus != 404 && nStatus != 500) + else if ((nStatus >= 400) && (nStatus != 400) && (nStatus != 404) && (nStatus != 500)) // ? throw std::runtime_error(strprintf("server returned HTTP error %d", nStatus)); else if (strReply.empty()) throw std::runtime_error("no response from server"); @@ -170,3 +162,4 @@ Json::Value callRPC(const std::string& strMethod, const Json::Value& params) return valReply; } +// vim:ts=4 diff --git a/src/Ledger.cpp b/src/Ledger.cpp index 7779e72fc..6af197e63 100644 --- a/src/Ledger.cpp +++ b/src/Ledger.cpp @@ -19,12 +19,12 @@ Ledger::Ledger(const NewcoinAddress& masterID, uint64 startAmount) : mFeeHeld(0), mTimeStamp(0), mLedgerSeq(0), mClosed(false), mValidHash(false), mAccepted(false), mImmutable(false) { - mTransactionMap=boost::make_shared(); - mAccountStateMap=boost::make_shared(); + mTransactionMap = boost::make_shared(); + mAccountStateMap = boost::make_shared(); - AccountState::pointer startAccount=boost::make_shared(masterID); + AccountState::pointer startAccount = boost::make_shared(masterID); startAccount->credit(startAmount); - if(!addAccountState(startAccount)) + if (!addAccountState(startAccount)) assert(false); } @@ -41,8 +41,8 @@ Ledger::Ledger(Ledger &prevLedger, uint64 ts) : mTimeStamp(ts), mClosed(false), mValidHash(false), mAccepted(false), mImmutable(false), mTransactionMap(new SHAMap()), mAccountStateMap(prevLedger.mAccountStateMap) { - mParentHash=prevLedger.getHash(); - mLedgerSeq=prevLedger.mLedgerSeq+1; + mParentHash = prevLedger.getHash(); + mLedgerSeq = prevLedger.mLedgerSeq+1; mAccountStateMap->setSeq(mLedgerSeq); } @@ -51,17 +51,17 @@ Ledger::Ledger(const std::vector& rawLedger) : mFeeHeld(0), mTime { Serializer s(rawLedger); // 32seq, 64fee, 256phash, 256thash, 256ahash, 64ts - if(!s.get32(mLedgerSeq, BLgPIndex)) return; - if(!s.get64(mFeeHeld, BLgPFeeHeld)) return; - if(!s.get256(mParentHash, BLgPPrevLg)) return; - if(!s.get256(mTransHash, BLgPTxT)) return; - if(!s.get256(mAccountHash, BLgPAcT)) return; - if(!s.get64(mTimeStamp, BLgPClTs)) return; + if (!s.get32(mLedgerSeq, BLgPIndex)) return; + if (!s.get64(mFeeHeld, BLgPFeeHeld)) return; + if (!s.get256(mParentHash, BLgPPrevLg)) return; + if (!s.get256(mTransHash, BLgPTxT)) return; + if (!s.get256(mAccountHash, BLgPAcT)) return; + if (!s.get64(mTimeStamp, BLgPClTs)) return; updateHash(); if(mValidHash) { - mTransactionMap=boost::make_shared(); - mAccountStateMap=boost::make_shared(); + mTransactionMap = boost::make_shared(); + mAccountStateMap = boost::make_shared(); } } @@ -70,17 +70,17 @@ Ledger::Ledger(const std::string& rawLedger) : mFeeHeld(0), mTimeStamp(0), { Serializer s(rawLedger); // 32seq, 64fee, 256phash, 256thash, 256ahash, 64ts - if(!s.get32(mLedgerSeq, BLgPIndex)) return; - if(!s.get64(mFeeHeld, BLgPFeeHeld)) return; - if(!s.get256(mParentHash, BLgPPrevLg)) return; - if(!s.get256(mTransHash, BLgPTxT)) return; - if(!s.get256(mAccountHash, BLgPAcT)) return; - if(!s.get64(mTimeStamp, BLgPClTs)) return; + if (!s.get32(mLedgerSeq, BLgPIndex)) return; + if (!s.get64(mFeeHeld, BLgPFeeHeld)) return; + if (!s.get256(mParentHash, BLgPPrevLg)) return; + if (!s.get256(mTransHash, BLgPTxT)) return; + if (!s.get256(mAccountHash, BLgPAcT)) return; + if (!s.get64(mTimeStamp, BLgPClTs)) return; updateHash(); if(mValidHash) { - mTransactionMap=boost::make_shared(); - mAccountStateMap=boost::make_shared(); + mTransactionMap = boost::make_shared(); + mAccountStateMap = boost::make_shared(); } } @@ -88,16 +88,16 @@ void Ledger::updateHash() { if(!mImmutable) { - if(mTransactionMap) mTransHash=mTransactionMap->getHash(); + if (mTransactionMap) mTransHash = mTransactionMap->getHash(); else mTransHash.zero(); - if(mAccountStateMap) mAccountHash=mAccountStateMap->getHash(); + if (mAccountStateMap) mAccountHash = mAccountStateMap->getHash(); else mAccountHash.zero(); } Serializer s(116); addRaw(s); - mHash=s.getSHA512Half(); - mValidHash=true; + mHash =s.getSHA512Half(); + mValidHash = true; } void Ledger::addRaw(Serializer &s) @@ -116,8 +116,8 @@ AccountState::pointer Ledger::getAccountState(const NewcoinAddress& accountID) std::cerr << "Ledger:getAccountState(" << accountID.humanAccountID() << ")" << std::endl; #endif ScopedLock l(mTransactionMap->Lock()); - SHAMapItem::pointer item=mAccountStateMap->peekItem(accountID.getAccountID().to256()); - if(!item) + SHAMapItem::pointer item = mAccountStateMap->peekItem(accountID.getAccountID().to256()); + if (!item) { #ifdef DEBUG std::cerr << " notfound" << std::endl; @@ -130,23 +130,23 @@ AccountState::pointer Ledger::getAccountState(const NewcoinAddress& accountID) uint64 Ledger::getBalance(const NewcoinAddress& accountID) const { ScopedLock l(mTransactionMap->Lock()); - SHAMapItem::pointer item=mAccountStateMap->peekItem(accountID.getAccountID().to256()); - if(!item) return 0; + SHAMapItem::pointer item = mAccountStateMap->peekItem(accountID.getAccountID().to256()); + if (!item) return 0; return AccountState(item->getData()).getBalance(); } bool Ledger::updateAccountState(AccountState::pointer state) { assert(!mAccepted); - SHAMapItem::pointer item=boost::make_shared(state->getAccountID().getAccountID(), state->getRaw()); - return mAccountStateMap->updateGiveItem(item, false); + return mAccountStateMap->updateGiveItem(boost::make_shared(state->getAccountID().getAccountID(), + state->getRaw()), false); } bool Ledger::addAccountState(AccountState::pointer state) { assert(!mAccepted); assert( (state->getBalance()==0) || (state->getSeq()>0) ); - SHAMapItem::pointer item=boost::make_shared(state->getAccountID().getAccountID(), state->getRaw()); + SHAMapItem::pointer item = boost::make_shared(state->getAccountID().getAccountID(), state->getRaw()); return mAccountStateMap->addGiveItem(item, false); } @@ -156,7 +156,7 @@ bool Ledger::addTransaction(Transaction::pointer trans) assert(!!trans->getID()); Serializer s; trans->getSTransaction()->getTransaction(s, false); - SHAMapItem::pointer item=boost::make_shared(trans->getID(), s.peekData()); + SHAMapItem::pointer item = boost::make_shared(trans->getID(), s.peekData()); return mTransactionMap->addGiveItem(item, true); } @@ -173,14 +173,15 @@ bool Ledger::hasTransaction(const uint256& transID) const Transaction::pointer Ledger::getTransaction(const uint256& transID) const { - SHAMapItem::pointer item=mTransactionMap->peekItem(transID); - if(!item) return Transaction::pointer(); + SHAMapItem::pointer item = mTransactionMap->peekItem(transID); + if (!item) return Transaction::pointer(); - Transaction::pointer txn=theApp->getMasterTransaction().fetch(transID, false); - if(txn) return txn; + Transaction::pointer txn = theApp->getMasterTransaction().fetch(transID, false); + if (txn) return txn; - txn=boost::make_shared(item->getData(), true); - if(txn->getStatus()==NEW) txn->setStatus(mClosed ? COMMITTED : INCLUDED, mLedgerSeq); + txn = boost::make_shared(item->getData(), true); + if (txn->getStatus() == NEW) + txn->setStatus(mClosed ? COMMITTED : INCLUDED, mLedgerSeq); theApp->getMasterTransaction().canonicalize(txn, false); return txn; @@ -190,9 +191,9 @@ Ledger::TransResult Ledger::applyTransaction(Transaction::pointer trans) { assert(!mAccepted); boost::recursive_mutex::scoped_lock sl(mLock); - if(trans->getSourceLedger()>mLedgerSeq) return TR_BADLSEQ; + if (trans->getSourceLedger() > mLedgerSeq) return TR_BADLSEQ; - if(trans->getAmount()getFee()) + if (trans->getAmount()getFee()) { #ifdef DEBUG std::cerr << "Transaction for " << trans->getAmount() << ", but fee is " << @@ -519,38 +520,37 @@ Ledger::pointer Ledger::switchPreviousLedger(Ledger::pointer oldPrevious, Ledger do { count=0; - std::map >::iterator it=TxnDiff.begin(); - while(it!=TxnDiff.end()) + std::map >::iterator it = TxnDiff.begin(); + while (it != TxnDiff.end()) { - Transaction::pointer& tx=it->second.second; - if(!tx || newLedger->addTransaction(tx)) + Transaction::pointer& tx = it->second.second; + if (!tx || newLedger->addTransaction(tx)) { count++; TxnDiff.erase(it++); } else ++it; } - } while(count!=0); + } while (count!=0); // WRITEME: Handle rejected transactions left in TxnDiff // 5) Try to add transactions from this ledger to the new ledger. std::map txnMap; - for(SHAMapItem::pointer mit=peekTransactionMap()->peekFirstItem(); - !!mit; - mit=peekTransactionMap()->peekNextItem(mit->getTag())) + for(SHAMapItem::pointer mit = peekTransactionMap()->peekFirstItem(); + !!mit; mit = peekTransactionMap()->peekNextItem(mit->getTag())) { - uint256 txnID=mit->getTag(); - Transaction::pointer tx=theApp->getMasterTransaction().fetch(txnID, false); - if(!tx) tx=boost::make_shared(mit->peekData(), false); + uint256 txnID = mit->getTag(); + Transaction::pointer tx = theApp->getMasterTransaction().fetch(txnID, false); + if(!tx) tx = boost::make_shared(mit->peekData(), false); txnMap.insert(std::make_pair(txnID, tx)); } do { count=0; - std::map::iterator it=txnMap.begin(); - while(it!=txnMap.end()) + std::map::iterator it = txnMap.begin(); + while (it != txnMap.end()) { if(newLedger->addTransaction(it->second)) { diff --git a/src/SerializedObject.cpp b/src/SerializedObject.cpp index 1a9f7a56c..7498cdf46 100644 --- a/src/SerializedObject.cpp +++ b/src/SerializedObject.cpp @@ -77,16 +77,17 @@ SerializedType* STObject::makeDeserializedObject(SerializedTypeID id, const char STObject::STObject(SOElement* elem, const char *name) : SerializedType(name), mFlagIdx(-1) { - while(elem->e_id!=STI_DONE) + while (elem->e_id != STI_DONE) { - if(elem->e_type==SOE_FLAGS) mFlagIdx=mType.size(); + if (elem->e_type == SOE_FLAGS) + mFlagIdx = mType.size(); mType.push_back(elem); - if( (elem->e_type==SOE_IFFLAG) || (elem->e_type==SOE_IFNFLAG) ) + if ( (elem->e_type == SOE_IFFLAG) || (elem->e_type == SOE_IFNFLAG) ) giveObject(new STObject(elem->e_name)); else { - SerializedType* t=makeDefaultObject(elem->e_id, elem->e_name); - if(!t) throw(std::runtime_error("invalid transaction element")); + SerializedType* t = makeDefaultObject(elem->e_id, elem->e_name); + if (!t) throw std::runtime_error("invalid transaction element"); giveObject(t); } elem++; @@ -95,32 +96,32 @@ STObject::STObject(SOElement* elem, const char *name) : SerializedType(name), mF STObject::STObject(SOElement* elem, SerializerIterator& sit, const char *name) : SerializedType(name), mFlagIdx(-1) { - int flags=-1; - while(elem->e_id!=STI_DONE) + int flags = -1; + while (elem->e_id != STI_DONE) { mType.push_back(elem); - bool done=false; - if(elem->e_type==SOE_IFFLAG) + bool done = false; + if (elem->e_type == SOE_IFFLAG) { - assert(flags>=0); - if((flags&elem->e_flags)==0) done=true; + assert(flags >= 0); + if ((flags&elem->e_flags) == 0) done = true; } - else if(elem->e_type==SOE_IFNFLAG) + else if (elem->e_type == SOE_IFNFLAG) { - assert(flags>=0); - if((flags&elem->e_flags)!=0) done=true; + assert(flags >= 0); + if ((flags&elem->e_flags) != 0) done = true; } - else if(elem->e_type==SOE_FLAGS) + else if (elem->e_type == SOE_FLAGS) { - assert(elem->e_id==STI_UINT32); - flags=sit.get32(); - mFlagIdx=giveObject(new STUInt32(elem->e_name, flags)); - done=true; + assert(elem->e_id == STI_UINT32); + flags = sit.get32(); + mFlagIdx = giveObject(new STUInt32(elem->e_name, flags)); + done = true; } if(!done) { - SerializedType* t=makeDeserializedObject(elem->e_id, elem->e_name, sit); - if(!t) throw(std::runtime_error("invalid transaction element")); + SerializedType* t = makeDeserializedObject(elem->e_id, elem->e_name, sit); + if (!t) throw std::runtime_error("invalid transaction element"); giveObject(t); } elem++; @@ -130,59 +131,59 @@ STObject::STObject(SOElement* elem, SerializerIterator& sit, const char *name) : std::string STObject::getFullText() const { std::string ret; - if(name!=NULL) + if (name != NULL) { - ret=name; - ret+=" = {"; + ret = name; + ret += " = {"; } - else ret="{"; - for(boost::ptr_vector::const_iterator it=mData.begin(), end=mData.end(); it!=end; ++it) - ret+=it->getFullText(); - ret+="}"; + else ret = "{"; + for (boost::ptr_vector::const_iterator it = mData.begin(), end = mData.end(); it != end; ++it) + ret += it->getFullText(); + ret += "}"; return ret; } int STObject::getLength() const { - int ret=0; - for(boost::ptr_vector::const_iterator it=mData.begin(), end=mData.end(); it!=end; ++it) - ret+=it->getLength(); + int ret = 0; + for (boost::ptr_vector::const_iterator it = mData.begin(), end = mData.end(); it != end; ++it) + ret += it->getLength(); return ret; } void STObject::add(Serializer& s) const { - for(boost::ptr_vector::const_iterator it=mData.begin(), end=mData.end(); it!=end; ++it) + for (boost::ptr_vector::const_iterator it = mData.begin(), end = mData.end(); it != end; ++it) it->add(s); } std::string STObject::getText() const { - std::string ret="{"; - bool first=false; - for(boost::ptr_vector::const_iterator it=mData.begin(), end=mData.end(); it!=end; ++it) + std::string ret = "{"; + bool first = false; + for (boost::ptr_vector::const_iterator it = mData.begin(), end = mData.end(); it != end; ++it) { - if(!first) + if (!first) { - ret+=", "; - first=false; + ret += ", "; + first = false; } - ret+=it->getText(); + ret += it->getText(); } - ret+="}"; + ret += "}"; return ret; } bool STObject::isEquivalent(const SerializedType& t) const { - const STObject* v=dynamic_cast(&t); - if(!v) return false; - boost::ptr_vector::const_iterator it1=mData.begin(), end1=mData.end(); - boost::ptr_vector::const_iterator it2=v->mData.begin(), end2=v->mData.end(); - while((it1!=end1) && (it2!=end2)) + const STObject* v = dynamic_cast(&t); + if (!v) return false; + boost::ptr_vector::const_iterator it1 = mData.begin(), end1 = mData.end(); + boost::ptr_vector::const_iterator it2 = v->mData.begin(), end2 = v->mData.end(); + while ((it1 != end1) && (it2 != end2)) { - if(it1->getSType() != it2->getSType()) return false; - if(!it1->isEquivalent(*it2)) return false; + if (it1->getSType() != it2->getSType()) return false; + if (!it1->isEquivalent(*it2)) return false; ++it1; ++it2; } @@ -191,51 +192,51 @@ bool STObject::isEquivalent(const SerializedType& t) const int STObject::getFieldIndex(SOE_Field field) const { - int i=0; - for(std::vector::const_iterator it=mType.begin(), end=mType.end(); it!=end; ++it, ++i) - if((*it)->e_field==field) return i; + int i = 0; + for (std::vector::const_iterator it = mType.begin(), end = mType.end(); it != end; ++it, ++i) + if( (*it)->e_field == field) return i; return -1; } const SerializedType& STObject::peekAtField(SOE_Field field) const { - int index=getFieldIndex(field); - if(index==-1) throw std::runtime_error("Field not found"); + int index = getFieldIndex(field); + if (index == -1) throw std::runtime_error("Field not found"); return peekAtIndex(index); } SerializedType& STObject::getField(SOE_Field field) { - int index=getFieldIndex(field); - if(index==-1) throw std::runtime_error("Field not found"); + int index = getFieldIndex(field); + if (index==-1) throw std::runtime_error("Field not found"); return getIndex(index); } const SerializedType* STObject::peekAtPField(SOE_Field field) const { - int index=getFieldIndex(field); - if(index==-1) return NULL; + int index = getFieldIndex(field); + if (index == -1) return NULL; return peekAtPIndex(index); } SerializedType* STObject::getPField(SOE_Field field) { - int index=getFieldIndex(field); - if(index==-1) return NULL; + int index = getFieldIndex(field); + if (index == -1) return NULL; return getPIndex(index); } bool STObject::isFieldPresent(SOE_Field field) const { - int index=getFieldIndex(field); - if(index==-1) return false; - return peekAtIndex(field).getSType()==STI_OBJECT; + int index = getFieldIndex(field); + if (index == -1) return false; + return peekAtIndex(field).getSType() == STI_OBJECT; } bool STObject::setFlag(uint32 f) { - if(mFlagIdx<0) return false; - STUInt32* t=dynamic_cast(getPIndex(mFlagIdx)); + if (mFlagIdx<0) return false; + STUInt32* t = dynamic_cast(getPIndex(mFlagIdx)); assert(t); t->setValue(t->getValue() | f); return true; @@ -243,8 +244,8 @@ bool STObject::setFlag(uint32 f) bool STObject::clearFlag(uint32 f) { - if(mFlagIdx<0) return false; - STUInt32* t=dynamic_cast(getPIndex(mFlagIdx)); + if (mFlagIdx<0) return false; + STUInt32* t = dynamic_cast(getPIndex(mFlagIdx)); assert(t); t->setValue(t->getValue() & ~f); return true; @@ -252,247 +253,248 @@ bool STObject::clearFlag(uint32 f) uint32 STObject::getFlags(void) const { - if(mFlagIdx<0) return 0; - const STUInt32* t=dynamic_cast(peekAtPIndex(mFlagIdx)); + if (mFlagIdx<0) return 0; + const STUInt32* t = dynamic_cast(peekAtPIndex(mFlagIdx)); assert(t); return t->getValue(); } void STObject::makeFieldPresent(SOE_Field field) { - int index=getFieldIndex(field); - if(index==-1) throw std::runtime_error("Field not found"); - if(peekAtIndex(field).getSType()!=STI_OBJECT) return; + int index = getFieldIndex(field); + if (index == -1) throw std::runtime_error("Field not found"); + if (peekAtIndex(field).getSType() != STI_OBJECT) return; mData.replace(index, makeDefaultObject(mType[index]->e_id, mType[index]->e_name)); setFlag(mType[index]->e_flags); } void STObject::makeFieldAbsent(SOE_Field field) { - int index=getFieldIndex(field); - if(index==-1) throw std::runtime_error("Field not found"); - if(peekAtIndex(field).getSType()==STI_OBJECT) return; + int index = getFieldIndex(field); + if (index == -1) throw std::runtime_error("Field not found"); + if (peekAtIndex(field).getSType() == STI_OBJECT) return; mData.replace(index, new STObject(mType[index]->e_name)); clearFlag(mType[index]->e_flags); } std::string STObject::getFieldString(SOE_Field field) const { - const SerializedType* rf=peekAtPField(field); - if(!rf) throw std::runtime_error("Field not found"); + const SerializedType* rf = peekAtPField(field); + if (!rf) throw std::runtime_error("Field not found"); return rf->getText(); } unsigned char STObject::getValueFieldU8(SOE_Field field) const { - const SerializedType* rf=peekAtPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) return 0; // optional field not present - const STUInt8 *cf=dynamic_cast(rf); - if(!cf) throw std::runtime_error("Wrong field type"); + const SerializedType* rf = peekAtPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) return 0; // optional field not present + const STUInt8 *cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); return cf->getValue(); } uint16 STObject::getValueFieldU16(SOE_Field field) const { - const SerializedType* rf=peekAtPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) return 0; // optional field not present - const STUInt16 *cf=dynamic_cast(rf); - if(!cf) throw std::runtime_error("Wrong field type"); + const SerializedType* rf = peekAtPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) return 0; // optional field not present + const STUInt16 *cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); return cf->getValue(); } uint32 STObject::getValueFieldU32(SOE_Field field) const { - const SerializedType* rf=peekAtPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) return 0; // optional field not present - const STUInt32 *cf=dynamic_cast(rf); - if(!cf) throw std::runtime_error("Wrong field type"); + const SerializedType* rf = peekAtPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) return 0; // optional field not present + const STUInt32 *cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); return cf->getValue(); } uint64 STObject::getValueFieldU64(SOE_Field field) const { - const SerializedType* rf=peekAtPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) return 0; // optional field not present - const STUInt64 *cf=dynamic_cast(rf); - if(!cf) throw std::runtime_error("Wrong field type"); + const SerializedType* rf = peekAtPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) return 0; // optional field not present + const STUInt64 *cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); return cf->getValue(); } uint160 STObject::getValueFieldH160(SOE_Field field) const { - const SerializedType* rf=peekAtPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) return uint160(); // optional field not present - const STHash160 *cf=dynamic_cast(rf); - if(!cf) throw std::runtime_error("Wrong field type"); + const SerializedType* rf = peekAtPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) return uint160(); // optional field not present + const STHash160 *cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); return cf->getValue(); } uint256 STObject::getValueFieldH256(SOE_Field field) const { - const SerializedType* rf=peekAtPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) return uint256(); // optional field not present - const STHash256 *cf=dynamic_cast(rf); - if(!cf) throw std::runtime_error("Wrong field type"); + const SerializedType* rf = peekAtPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) return uint256(); // optional field not present + const STHash256 *cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); return cf->getValue(); } std::vector STObject::getValueFieldVL(SOE_Field field) const { - const SerializedType* rf=peekAtPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) return std::vector(); // optional field not present - const STVariableLength *cf=dynamic_cast(rf); - if(!cf) throw std::runtime_error("Wrong field type"); + const SerializedType* rf = peekAtPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) return std::vector(); // optional field not present + const STVariableLength *cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); return cf->getValue(); } std::vector STObject::getValueFieldTL(SOE_Field field) const { - const SerializedType* rf=peekAtPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) return std::vector(); // optional field not present - const STTaggedList *cf=dynamic_cast(rf); - if(!cf) throw std::runtime_error("Wrong field type"); + const SerializedType* rf = peekAtPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) return std::vector(); // optional field not present + const STTaggedList *cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); return cf->getValue(); } void STObject::setValueFieldU8(SOE_Field field, unsigned char v) { - SerializedType* rf=getPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) + SerializedType* rf = getPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) { makeFieldPresent(field); - rf=getPField(field); - id=rf->getSType(); + rf = getPField(field); + id = rf->getSType(); } - STUInt8* cf=dynamic_cast(rf); - if(!cf) throw(std::runtime_error("Wrong field type")); + STUInt8* cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); cf->setValue(v); } void STObject::setValueFieldU16(SOE_Field field, uint16 v) { - SerializedType* rf=getPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) + SerializedType* rf = getPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) { makeFieldPresent(field); - rf=getPField(field); - id=rf->getSType(); + rf = getPField(field); + id = rf->getSType(); } - STUInt16* cf=dynamic_cast(rf); - if(!cf) throw(std::runtime_error("Wrong field type")); + STUInt16* cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); cf->setValue(v); } void STObject::setValueFieldU32(SOE_Field field, uint32 v) { - SerializedType* rf=getPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) + SerializedType* rf = getPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) { makeFieldPresent(field); - rf=getPField(field); - id=rf->getSType(); + rf = getPField(field); + id = rf->getSType(); } - STUInt32* cf=dynamic_cast(rf); - if(!cf) throw(std::runtime_error("Wrong field type")); + STUInt32* cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); cf->setValue(v); } void STObject::setValueFieldU64(SOE_Field field, uint64 v) { - SerializedType* rf=getPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) + SerializedType* rf = getPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) { makeFieldPresent(field); - rf=getPField(field); - id=rf->getSType(); + rf = getPField(field); + id = rf->getSType(); } - STUInt64* cf=dynamic_cast(rf); - if(!cf) throw(std::runtime_error("Wrong field type")); + STUInt64* cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); cf->setValue(v); } void STObject::setValueFieldH160(SOE_Field field, const uint160& v) { - SerializedType* rf=getPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) + SerializedType* rf = getPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) { makeFieldPresent(field); - rf=getPField(field); - id=rf->getSType(); + rf = getPField(field); + id = rf->getSType(); } - STHash160* cf=dynamic_cast(rf); - if(!cf) throw(std::runtime_error("Wrong field type")); + STHash160* cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); cf->setValue(v); } void STObject::setValueFieldVL(SOE_Field field, const std::vector& v) { - SerializedType* rf=getPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) + SerializedType* rf = getPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) { makeFieldPresent(field); rf=getPField(field); id=rf->getSType(); } - STVariableLength* cf=dynamic_cast(rf); - if(!cf) throw(std::runtime_error("Wrong field type")); + STVariableLength* cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); cf->setValue(v); } void STObject::setValueFieldTL(SOE_Field field, const std::vector& v) { - SerializedType* rf=getPField(field); - if(!rf) throw std::runtime_error("Field not found"); - SerializedTypeID id=rf->getSType(); - if(id==STI_OBJECT) + SerializedType* rf = getPField(field); + if (!rf) throw std::runtime_error("Field not found"); + SerializedTypeID id = rf->getSType(); + if (id == STI_OBJECT) { makeFieldPresent(field); rf=getPField(field); id=rf->getSType(); } - STTaggedList* cf=dynamic_cast(rf); - if(!cf) throw(std::runtime_error("Wrong field type")); + STTaggedList* cf = dynamic_cast(rf); + if (!cf) throw std::runtime_error("Wrong field type"); cf->setValue(v); } Json::Value STObject::getJson(int options) const { Json::Value ret(Json::objectValue); - int index=1; - for(boost::ptr_vector::const_iterator it=mData.begin(), end=mData.end(); it!=end; ++it, ++index) + int index = 1; + for(boost::ptr_vector::const_iterator it = mData.begin(), end = mData.end(); it != end; + ++it, ++index) { - if(it->getSType()!=STI_NOTPRESENT) + if (it->getSType() != STI_NOTPRESENT) { - if(it->getName()==NULL) - ret[boost::lexical_cast(index)]=it->getText(); + if (it->getName() == NULL) + ret[boost::lexical_cast(index)] = it->getText(); else ret[it->getName()]=it->getText(); } } diff --git a/src/SerializedObject.h b/src/SerializedObject.h index bb774388e..06bd3bcd2 100644 --- a/src/SerializedObject.h +++ b/src/SerializedObject.h @@ -11,13 +11,17 @@ enum SOE_Type { - SOE_NEVER=-1, SOE_REQUIRED=0, SOE_FLAGS, SOE_IFFLAG=1, SOE_IFNFLAG=2 + SOE_NEVER = -1, // never occurs (marks end of object) + SOE_REQUIRED = 0, // required + SOE_FLAGS = 1, // flags field + SOE_IFFLAG = 2, // present if flag set + SOE_IFNFLAG = 3 // present if flag not set }; enum SOE_Field { - sfInvalid=-1, - sfGeneric=0, + sfInvalid = -1, + sfGeneric = 0, // common fields sfFlags, sfExtensions, sfTargetLedger, sfSourceTag, sfIdentifier, @@ -50,9 +54,9 @@ protected: static SerializedType* makeDeserializedObject(SerializedTypeID id, const char *name, SerializerIterator&); public: - STObject(const char *n=NULL) : SerializedType(n), mFlagIdx(-1) { ; } - STObject(SOElement *t, const char *n=NULL); - STObject(SOElement *t, SerializerIterator& u, const char *n=NULL); + STObject(const char *n = NULL) : SerializedType(n), mFlagIdx(-1) { ; } + STObject(SOElement *t, const char *n = NULL); + STObject(SOElement *t, SerializerIterator& u, const char *n = NULL); virtual ~STObject() { ; } int getLength() const; diff --git a/src/SerializedTransaction.cpp b/src/SerializedTransaction.cpp index ebcb290ca..a4a94b367 100644 --- a/src/SerializedTransaction.cpp +++ b/src/SerializedTransaction.cpp @@ -4,7 +4,7 @@ SerializedTransaction::SerializedTransaction(TransactionType type) { mFormat=getTxnFormat(type); - if(mFormat==NULL) throw(std::runtime_error("invalid transaction type")); + if (mFormat == NULL) throw std::runtime_error("invalid transaction type"); mMiddleTxn.giveObject(new STUInt32("Magic", TransactionMagic)); mMiddleTxn.giveObject(new STVariableLength("SigningAccount")); @@ -17,27 +17,27 @@ SerializedTransaction::SerializedTransaction(TransactionType type) SerializedTransaction::SerializedTransaction(SerializerIterator& sit, int length) { - if(length==-1) length=sit.getBytesLeft(); - else if(length==0) length=sit.get32(); - if( (lengthTransactionMaxLen) ) - throw(std::runtime_error("Transaction length invalid")); + if (length == -1) length=sit.getBytesLeft(); + else if (length == 0) length=sit.get32(); + if ( (length < TransactionMinLen) || (length > TransactionMaxLen) ) + throw std::runtime_error("Transaction length invalid"); mSignature.setValue(sit.getVL()); - if(sit.get32()!=TransactionMagic) - throw(std::runtime_error("Transaction has invalid magic")); + if (sit.get32() != TransactionMagic) + throw std::runtime_error("Transaction has invalid magic"); mMiddleTxn.giveObject(new STUInt32("Magic", TransactionMagic)); mMiddleTxn.giveObject(new STVariableLength("SigningAccount", sit.getVL())); mMiddleTxn.giveObject(new STUInt32("Sequence", sit.get32())); - int type=sit.get32(); + int type = sit.get32(); mMiddleTxn.giveObject(new STUInt32("Type", type)); - mFormat=getTxnFormat(static_cast(type)); - if(!mFormat) throw(std::runtime_error("Transaction has invalid type")); + mFormat = getTxnFormat(static_cast(type)); + if (!mFormat) throw std::runtime_error("Transaction has invalid type"); mMiddleTxn.giveObject(new STUInt64("Fee", sit.get64())); - mInnerTxn=STObject(mFormat->elements, sit, "InnerTransaction"); + mInnerTxn = STObject(mFormat->elements, sit, "InnerTransaction"); } int SerializedTransaction::getLength() const @@ -47,30 +47,30 @@ int SerializedTransaction::getLength() const std::string SerializedTransaction::getFullText() const { - std::string ret="\""; - ret+=getTransactionID().GetHex(); - ret+="\" = {"; - ret+=mSignature.getFullText(); - ret+=mMiddleTxn.getFullText(); - ret+=mInnerTxn.getFullText(); - ret+="}"; + std::string ret = "\""; + ret += getTransactionID().GetHex(); + ret += "\" = {"; + ret += mSignature.getFullText(); + ret += mMiddleTxn.getFullText(); + ret += mInnerTxn.getFullText(); + ret += "}"; return ret; } std::string SerializedTransaction::getText() const { - std::string ret="{"; - ret+=mSignature.getText(); - ret+=mMiddleTxn.getText(); - ret+=mInnerTxn.getText(); - ret+="}"; + std::string ret = "{"; + ret += mSignature.getText(); + ret += mMiddleTxn.getText(); + ret += mInnerTxn.getText(); + ret += "}"; return ret; } int SerializedTransaction::getTransaction(Serializer& s, bool include_length) const { - int l=getLength(); - if(include_length) s.add32(l); + int l = getLength(); + if (include_length) s.add32(l); mSignature.add(s); mMiddleTxn.add(s); mInnerTxn.add(s); @@ -79,11 +79,11 @@ int SerializedTransaction::getTransaction(Serializer& s, bool include_length) co bool SerializedTransaction::isEquivalent(const SerializedType& t) const { // Signatures are not compared - const SerializedTransaction* v=dynamic_cast(&t); - if(!v) return false; - if(type != v->type) return false; - if(mMiddleTxn != v->mMiddleTxn) return false; - if(mInnerTxn != v->mInnerTxn) return false; + const SerializedTransaction* v = dynamic_cast(&t); + if (!v) return false; + if (type != v->type) return false; + if (mMiddleTxn != v->mMiddleTxn) return false; + if (mInnerTxn != v->mInnerTxn) return false; return true; } @@ -131,51 +131,51 @@ void SerializedTransaction::setSignature(const std::vector& sig) uint32 SerializedTransaction::getVersion() const { - const STUInt32* v=dynamic_cast(mMiddleTxn.peekAtPIndex(TransactionIVersion)); - if(!v) throw(std::runtime_error("corrupt transaction")); + const STUInt32* v = dynamic_cast(mMiddleTxn.peekAtPIndex(TransactionIVersion)); + if (!v) throw std::runtime_error("corrupt transaction"); return v->getValue(); } void SerializedTransaction::setVersion(uint32 ver) { - STUInt32* v=dynamic_cast(mMiddleTxn.getPIndex(TransactionIVersion)); - if(!v) throw(std::runtime_error("corrupt transaction")); + STUInt32* v = dynamic_cast(mMiddleTxn.getPIndex(TransactionIVersion)); + if (!v) throw std::runtime_error("corrupt transaction"); v->setValue(ver); } uint64 SerializedTransaction::getTransactionFee() const { - const STUInt64* v=dynamic_cast(mMiddleTxn.peekAtPIndex(TransactionIFee)); - if(!v) throw(std::runtime_error("corrupt transaction")); + const STUInt64* v = dynamic_cast(mMiddleTxn.peekAtPIndex(TransactionIFee)); + if (!v) throw std::runtime_error("corrupt transaction"); return v->getValue(); } void SerializedTransaction::setTransactionFee(uint64 fee) { - STUInt64* v=dynamic_cast(mMiddleTxn.getPIndex(TransactionIFee)); - if(!v) throw(std::runtime_error("corrupt transaction")); + STUInt64* v = dynamic_cast(mMiddleTxn.getPIndex(TransactionIFee)); + if (!v) throw std::runtime_error("corrupt transaction"); v->setValue(fee); } uint32 SerializedTransaction::getSequence() const { - const STUInt32* v=dynamic_cast(mMiddleTxn.peekAtPIndex(TransactionISequence)); - if(!v) throw(std::runtime_error("corrupt transaction")); + const STUInt32* v = dynamic_cast(mMiddleTxn.peekAtPIndex(TransactionISequence)); + if (!v) throw std::runtime_error("corrupt transaction"); return v->getValue(); } void SerializedTransaction::setSequence(uint32 seq) { - STUInt32* v=dynamic_cast(mMiddleTxn.getPIndex(TransactionISequence)); - if(!v) throw(std::runtime_error("corrupt transaction")); + STUInt32* v = dynamic_cast(mMiddleTxn.getPIndex(TransactionISequence)); + if (!v) throw std::runtime_error("corrupt transaction"); v->setValue(seq); } std::vector SerializedTransaction::getSigningAccount() const { - const STVariableLength* v= + const STVariableLength* v = dynamic_cast(mMiddleTxn.peekAtPIndex(TransactionISigningAccount)); - if(!v) throw(std::runtime_error("corrupt transaction")); + if (!v) throw std::runtime_error("corrupt transaction"); return v->getValue(); } @@ -183,21 +183,21 @@ const std::vector& SerializedTransaction::peekSigningAccount() co { const STVariableLength* v= dynamic_cast(mMiddleTxn.peekAtPIndex(TransactionISigningAccount)); - if(!v) throw(std::runtime_error("corrupt transaction")); + if (!v) throw std::runtime_error("corrupt transaction"); return v->peekValue(); } std::vector& SerializedTransaction::peekSigningAccount() { - STVariableLength* v=dynamic_cast(mMiddleTxn.getPIndex(TransactionISigningAccount)); - if(!v) throw(std::runtime_error("corrupt transaction")); + STVariableLength* v = dynamic_cast(mMiddleTxn.getPIndex(TransactionISigningAccount)); + if (!v) throw std::runtime_error("corrupt transaction"); return v->peekValue(); } void SerializedTransaction::setSigningAccount(const std::vector& s) { - STVariableLength* v=dynamic_cast(mMiddleTxn.getPIndex(TransactionISigningAccount)); - if(!v) throw(std::runtime_error("corrupt transaction")); + STVariableLength* v = dynamic_cast(mMiddleTxn.getPIndex(TransactionISigningAccount)); + if (!v) throw std::runtime_error("corrupt transaction"); v->setValue(s); } @@ -239,10 +239,10 @@ void SerializedTransaction::makeITFieldAbsent(SOE_Field field) Json::Value SerializedTransaction::getJson(int options) const { Json::Value ret(Json::objectValue); - ret["Type"]=mFormat->t_name; - ret["ID"]=getTransactionID().GetHex(); - ret["Signature"]=mSignature.getText(); - ret["Middle"]=mMiddleTxn.getJson(options); - ret["Inner"]=mInnerTxn.getJson(options); + ret["Type"] = mFormat->t_name; + ret["ID"] = getTransactionID().GetHex(); + ret["Signature"] = mSignature.getText(); + ret["Middle"] = mMiddleTxn.getJson(options); + ret["Inner"] = mInnerTxn.getJson(options); return ret; } diff --git a/src/Serializer.cpp b/src/Serializer.cpp index 16d14a829..32b7175ff 100644 --- a/src/Serializer.cpp +++ b/src/Serializer.cpp @@ -6,181 +6,181 @@ int Serializer::add16(uint16 i) { - int ret=mData.size(); - mData.push_back(static_cast(i>>8)); - mData.push_back(static_cast(i&0xff)); + int ret = mData.size(); + mData.push_back(static_cast(i >> 8)); + mData.push_back(static_cast(i & 0xff)); return ret; } int Serializer::add32(uint32 i) { - int ret=mData.size(); - mData.push_back(static_cast(i>>24)); - mData.push_back(static_cast((i>>16)&0xff)); - mData.push_back(static_cast((i>>8)&0xff)); - mData.push_back(static_cast(i&0xff)); + int ret = mData.size(); + mData.push_back(static_cast(i >> 24)); + mData.push_back(static_cast((i >> 16) & 0xff)); + mData.push_back(static_cast((i >> 8) & 0xff)); + mData.push_back(static_cast(i & 0xff)); return ret; } int Serializer::add64(uint64 i) { - int ret=mData.size(); - mData.push_back(static_cast(i>>56)); - mData.push_back(static_cast((i>>48)&0xff)); - mData.push_back(static_cast((i>>40)&0xff)); - mData.push_back(static_cast((i>>32)&0xff)); - mData.push_back(static_cast((i>>24)&0xff)); - mData.push_back(static_cast((i>>16)&0xff)); - mData.push_back(static_cast((i>>8)&0xff)); - mData.push_back(static_cast(i&0xff)); + int ret = mData.size(); + mData.push_back(static_cast(i >> 56)); + mData.push_back(static_cast((i >> 48) & 0xff)); + mData.push_back(static_cast((i >> 40) & 0xff)); + mData.push_back(static_cast((i >> 32) & 0xff)); + mData.push_back(static_cast((i >> 24) & 0xff)); + mData.push_back(static_cast((i >> 16) & 0xff)); + mData.push_back(static_cast((i >> 8) & 0xff)); + mData.push_back(static_cast(i & 0xff)); return ret; } int Serializer::add128(const uint128& i) { - int ret=mData.size(); + int ret = mData.size(); mData.insert(mData.end(), i.begin(), i.end()); return ret; } int Serializer::add160(const uint160& i) { - int ret=mData.size(); + int ret = mData.size(); mData.insert(mData.end(), i.begin(), i.end()); return ret; } int Serializer::add256(const uint256& i) { - int ret=mData.size(); + int ret = mData.size(); mData.insert(mData.end(), i.begin(), i.end()); return ret; } int Serializer::addRaw(const std::vector &vector) { - int ret=mData.size(); + int ret = mData.size(); mData.insert(mData.end(), vector.begin(), vector.end()); return ret; } int Serializer::addRaw(const void *ptr, int len) { - int ret=mData.size(); + int ret = mData.size(); mData.insert(mData.end(), (const char *) ptr, ((const char *)ptr)+len); return ret; } bool Serializer::get16(uint16& o, int offset) const { - if((offset+2)>mData.size()) return false; - o=mData.at(offset++); - o<<=8; o|=mData.at(offset); + if ((offset + 2) > mData.size()) return false; + o = mData.at(++offset); + o <<= 8; o |= mData.at(offset); return true; } bool Serializer::get32(uint32& o, int offset) const { - if((offset+4)>mData.size()) return false; - o=mData.at(offset++); - o<<=8; o|=mData.at(offset++); o<<=8; o|=mData.at(offset++); - o<<=8; o|=mData.at(offset); + if ((offset + 4) > mData.size()) return false; + o=mData.at(++offset); + o<<=8; o |= mData.at(++offset); o <<= 8; o |= mData.at(++offset); + o<<=8; o |= mData.at(offset); return true; } bool Serializer::get64(uint64& o, int offset) const { - if((offset+8)>mData.size()) return false; - o=mData.at(offset++); - o<<=8; o|=mData.at(offset++); o<<=8; o|=mData.at(offset++); - o<<=8; o|=mData.at(offset++); o<<=8; o|=mData.at(offset++); - o<<=8; o|=mData.at(offset++); o<<=8; o|=mData.at(offset++); - o<<=8; o|=mData.at(offset); + if ((offset + 8) > mData.size()) return false; + o=mData.at(++offset); + o<<=8; o|= mData.at(++offset); o <<= 8; o |= mData.at(++offset); + o<<=8; o|= mData.at(++offset); o <<= 8; o |= mData.at(++offset); + o<<=8; o|= mData.at(++offset); o <<= 8; o |= mData.at(++offset); + o<<=8; o|= mData.at(offset); return true; } bool Serializer::get128(uint128& o, int offset) const { - if((offset+(128/8))>mData.size()) return false; - memcpy(o.begin(), &(mData.front())+offset, (128/8)); + if ((offset + (128 / 8)) > mData.size()) return false; + memcpy(o.begin(), &(mData.front()) + offset, (128 / 8)); return true; } bool Serializer::get160(uint160& o, int offset) const { - if((offset+(160/8))>mData.size()) return false; - memcpy(o.begin(), &(mData.front())+offset, (160/8)); + if ((offset + (160 / 8)) > mData.size()) return false; + memcpy(o.begin(), &(mData.front()) + offset, (160 / 8)); return true; } bool Serializer::get256(uint256& o, int offset) const { - if((offset+(256/8))>mData.size()) return false; - memcpy(o.begin(), &(mData.front())+offset, (256/8)); + if ((offset + (256 / 8)) > mData.size()) return false; + memcpy(o.begin(), &(mData.front()) + offset, (256 / 8)); return true; } uint256 Serializer::get256(int offset) const { uint256 ret; - if((offset+(256/8))>mData.size()) return ret; - memcpy(&ret, &(mData.front())+offset, (256/8)); + if ((offset + (256 / 8)) > mData.size()) return ret; + memcpy(&ret, &(mData.front()) + offset, (256 / 8)); return ret; } int Serializer::add8(unsigned char byte) { - int ret=mData.size(); + int ret = mData.size(); mData.push_back(byte); return ret; } bool Serializer::get8(int& byte, int offset) const { - if(offset>=mData.size()) return false; - byte=mData[offset]; + if (offset >= mData.size()) return false; + byte = mData[offset]; return true; } bool Serializer::chop(int bytes) { - if(bytes>mData.size()) return false; - mData.resize(mData.size()-bytes); + if (bytes > mData.size()) return false; + mData.resize(mData.size() - bytes); return true; } int Serializer::removeLastByte() { - int size=mData.size()-1; - if(size<0) + int size = mData.size()-1; + if (size < 0) { assert(false); return -1; } - int ret=mData[size]; + int ret = mData[size]; mData.resize(size); return ret; } bool Serializer::getRaw(std::vector& o, int offset, int length) const { - if((offset+length)>mData.size()) return false; - o.assign(mData.begin()+offset, mData.begin()+offset+length); + if ((offset + length) > mData.size()) return false; + o.assign(mData.begin() + offset, mData.begin() + offset+length); return true; } std::vector Serializer::getRaw(int offset, int length) const { std::vector o; - if((offset+length)>mData.size()) return o; - o.assign(mData.begin()+offset, mData.begin()+offset+length); + if ((offset + length) > mData.size()) return o; + o.assign(mData.begin() + offset, mData.begin() + offset + length); return o; } uint160 Serializer::getRIPEMD160(int size) const { uint160 ret; - if((size<0)||(size>mData.size())) size=mData.size(); + if ((size < 0) || (size>mData.size())) size = mData.size(); RIPEMD160(&(mData.front()), size, (unsigned char *) &ret); return ret; } @@ -188,7 +188,7 @@ uint160 Serializer::getRIPEMD160(int size) const uint256 Serializer::getSHA256(int size) const { uint256 ret; - if((size<0)||(size>mData.size())) size=mData.size(); + if ((size < 0) || (size > mData.size())) size = mData.size(); SHA256(&(mData.front()), size, (unsigned char *) &ret); return ret; } @@ -201,7 +201,7 @@ uint256 Serializer::getSHA512Half(int size) const uint256 Serializer::getSHA512Half(const std::vector& data, int size) { uint256 j[2]; - if((size<0)||(size>data.size())) size=data.size(); + if ((size < 0) || (size > data.size())) size = data.size(); SHA512(&(data.front()), size, (unsigned char *) j); return j[0]; } @@ -221,11 +221,11 @@ uint256 Serializer::getSHA512Half(const std::string& strData) bool Serializer::checkSignature(int pubkeyOffset, int signatureOffset) const { std::vector pubkey, signature; - if(!getRaw(pubkey, pubkeyOffset, 65)) return false; - if(!getRaw(signature, signatureOffset, 72)) return false; + if (!getRaw(pubkey, pubkeyOffset, 65)) return false; + if (!getRaw(signature, signatureOffset, 72)) return false; CKey pubCKey; - if(!pubCKey.SetPubKey(pubkey)) return false; + if (!pubCKey.SetPubKey(pubkey)) return false; return pubCKey.Verify(getSHA512Half(signatureOffset), signature); } @@ -242,33 +242,33 @@ bool Serializer::makeSignature(std::vector &signature, CKey& key) bool Serializer::addSignature(CKey& key) { std::vector signature; - if(!key.Sign(getSHA512Half(), signature)) return false; - assert(signature.size()==72); + if (!key.Sign(getSHA512Half(), signature)) return false; + assert(signature.size() == 72); addRaw(signature); return true; } int Serializer::addVL(const std::vector& vector) { - int ret=addRaw(encodeVL(vector.size())); + int ret = addRaw(encodeVL(vector.size())); addRaw(vector); return ret; } int Serializer::addVL(const void *ptr, int len) { - int ret=addRaw(encodeVL(len)); + int ret = addRaw(encodeVL(len)); addRaw(ptr, len); return ret; } int Serializer::addTaggedList(const std::list& list) { - int size=list.size(); - if(size>255) return -1; - int ret=add8(size); - if(size!=0) - for(std::list::const_iterator it=list.begin(); it!=list.end(); ++it) + int size = list.size(); + if (size > 255) return -1; + int ret = add8(size); + if (size != 0) + for (std::list::const_iterator it = list.begin(); it != list.end(); ++it) { add8(it->first); addVL(it->second); @@ -278,11 +278,11 @@ int Serializer::addTaggedList(const std::list& list) int Serializer::addTaggedList(const std::vector& list) { - int size=list.size(); - if(size>255) return -1; - int ret=add8(size); - if(size!=0) - for(std::vector::const_iterator it=list.begin(); it!=list.end(); ++it) + int size = list.size(); + if (size > 255) return -1; + int ret = add8(size); + if (size != 0) + for (std::vector::const_iterator it = list.begin(); it != list.end(); ++it) { add8(it->first); addVL(it->second); @@ -292,48 +292,48 @@ int Serializer::addTaggedList(const std::vector& list) int Serializer::getTaggedListLength(const std::list& list) { - int size=list.size(); - if(size>255) return -1; - int ret=1; - if(size!=0) - for(std::list::const_iterator it=list.begin(); it!=list.end(); ++it) - ret+=1 + it->second.size() + Serializer::encodeLengthLength(it->second.size()); + int size = list.size(); + if (size > 255) return -1; + int ret = 1; + if (size != 0) + for (std::list::const_iterator it = list.begin(); it != list.end(); ++it) + ret += 1 + it->second.size() + Serializer::encodeLengthLength(it->second.size()); return ret; } int Serializer::getTaggedListLength(const std::vector& list) { - int size=list.size(); - if(size>255) return -1; - int ret=1; - if(size!=0) - for(std::vector::const_iterator it=list.begin(); it!=list.end(); ++it) - ret+=1 + it->second.size() + Serializer::encodeLengthLength(it->second.size()); + int size = list.size(); + if (size > 255) return -1; + int ret = 1; + if (size != 0) + for (std::vector::const_iterator it = list.begin(); it != list.end(); ++it) + ret += 1 + it->second.size() + Serializer::encodeLengthLength(it->second.size()); return ret; } bool Serializer::getVL(std::vector& objectVL, int offset, int& length) const { int b1; - if(!get8(b1, offset++)) return false; + if (!get8(b1, ++offset)) return false; - int datLen, lenLen=decodeLengthLength(b1); + int datLen, lenLen = decodeLengthLength(b1); try { - if(lenLen==1) - datLen=decodeVLLength(b1); - else if(lenLen==2) + if (lenLen == 1) + datLen = decodeVLLength(b1); + else if (lenLen == 2) { int b2; - if(!get8(b2, offset++)) return false; + if (!get8(b2, ++offset)) return false; datLen=decodeVLLength(b1, b2); } - else if(lenLen==3) + else if (lenLen == 3) { int b2, b3; - if(!get8(b2, offset++)) return false; - if(!get8(b3, offset++)) return false; - datLen=decodeVLLength(b1, b2, b3); + if (!get8(b2, ++offset)) return false; + if (!get8(b3, ++offset)) return false; + datLen = decodeVLLength(b1, b2, b3); } else return false; } @@ -341,32 +341,32 @@ bool Serializer::getVL(std::vector& objectVL, int offset, int& le { return false; } - length=lenLen+datLen; + length = lenLen + datLen; return getRaw(objectVL, offset, datLen); } bool Serializer::getVLLength(int& length, int offset) const { int b1; - if(!get8(b1, offset++)) return false; + if (!get8(b1, ++offset)) return false; - int lenLen=decodeLengthLength(b1); + int lenLen = decodeLengthLength(b1); try { - if(lenLen==1) + if (lenLen == 1) length=decodeVLLength(b1); - else if(lenLen==2) + else if (lenLen == 2) { int b2; - if(!get8(b2, offset++)) return false; + if (!get8(b2, ++offset)) return false; length=decodeVLLength(b1, b2); } - else if(lenLen==3) + else if (lenLen == 3) { int b2, b3; - if(!get8(b2, offset++)) return false; - if(!get8(b3, offset++)) return false; - length=decodeVLLength(b1, b2, b3); + if (!get8(b2, ++offset)) return false; + if (!get8(b3, ++offset)) return false; + length = decodeVLLength(b1, b2, b3); } else return false; } @@ -380,19 +380,19 @@ bool Serializer::getVLLength(int& length, int offset) const bool Serializer::getTaggedList(std::list& list, int offset, int& length) const { list.clear(); - int startOffset=offset; + int startOffset = offset; int numElem; - if(!get8(numElem, offset++)) return false; - for(int i=0; i data; - if(!get8(tag, offset++)) return false; - if(!getVL(data, offset, len)) return false; - offset+=len; + if (!get8(tag, ++offset)) return false; + if (!getVL(data, offset, len)) return false; + offset += len; list.push_back(std::make_pair(tag, data)); } - length=offset-startOffset; + length = offset - startOffset; return true; } @@ -401,83 +401,83 @@ bool Serializer::getTaggedList(std::vector& list, int offset, in list.clear(); int startOffset=offset; int numElem; - if(!get8(numElem, offset++)) return false; - for(int i=0; i data; - if(!get8(tag, offset++)) return false; - if(!getVL(data, offset, len)) return false; - offset+=len; + if (!get8(tag, ++offset)) return false; + if (!getVL(data, offset, len)) return false; + offset += len; list.push_back(std::make_pair(tag, data)); } - length=offset-startOffset; + length = offset - startOffset; return true; } std::vector Serializer::encodeVL(int length) { unsigned char lenBytes[4]; - if(length<=192) + if (length <= 192) { - lenBytes[0]=static_cast(length); + lenBytes[0] = static_cast(length); return std::vector(&lenBytes[0], &lenBytes[1]); } - else if(length<=12480) + else if (length <= 12480) { - length-=193; - lenBytes[0]=static_cast(length>>8); - lenBytes[1]=static_cast(length&0xff); + length -= 193; + lenBytes[0] = static_cast(length >> 8); + lenBytes[1] = static_cast(length & 0xff); return std::vector(&lenBytes[0], &lenBytes[2]); } - else if(length<=918744) + else if (length <= 918744) { - length-=12481; - lenBytes[0]=static_cast(length>>16); - lenBytes[1]=static_cast((length>>8)&0xff); - lenBytes[2]=static_cast(length&0xff); + length -= 12481; + lenBytes[0] = static_cast(length >> 16); + lenBytes[1] = static_cast((length >> 8) & 0xff); + lenBytes[2] = static_cast(length & 0xff); return std::vector(&lenBytes[0], &lenBytes[3]); } - else throw(std::overflow_error("lenlen")); + else throw std::overflow_error("lenlen"); } int Serializer::encodeLengthLength(int length) { - if(length<0) throw(std::overflow_error("len<0")); - if(length<=192) return 1; - if(length<=12480) return 2; - if(length>=918744) return 3; - throw(std::overflow_error("len>918644")); + if (length < 0) throw std::overflow_error("len<0"); + if (length <= 192) return 1; + if (length <= 12480) return 2; + if (length >= 918744) return 3; + throw std::overflow_error("len>918644"); } int Serializer::decodeLengthLength(int b1) { - if(b1<0) throw(std::overflow_error("b1<0")); - if(b1<=192) return 1; - if(b1<=240) return 2; - if(b1<=254) return 3; - throw(std::overflow_error("b1>254")); + if (b1 < 0) throw std::overflow_error("b1<0"); + if (b1 <= 192) return 1; + if (b1 <= 240) return 2; + if (b1 <= 254) return 3; + throw std::overflow_error("b1>254"); } int Serializer::decodeVLLength(int b1) { - if(b1<0) throw(std::overflow_error("b1<0")); - if(b1>254) throw(std::overflow_error("b1>254")); + if (b1 < 0) throw std::overflow_error("b1<0"); + if (b1 > 254) throw std::overflow_error("b1>254"); return b1; } int Serializer::decodeVLLength(int b1, int b2) { - if(b1<193) throw(std::overflow_error("b1<193")); - if(b1>240) throw(std::overflow_error("b1>240")); - return 193+(b1-193)*256+b2; + if (b1 < 193) throw std::overflow_error("b1<193"); + if (b1 > 240) throw std::overflow_error("b1>240"); + return 193 + (b1 - 193) * 256 + b2; } int Serializer::decodeVLLength(int b1, int b2, int b3) { - if(b1<241) throw(std::overflow_error("b1<241")); - if(b1>254) throw(std::overflow_error("b1>254")); - return 12481+(b1-241)*65536+b2*256+b3; + if (b1 < 241) throw std::overflow_error("b1<241"); + if (b1 > 254) throw std::overflow_error("b1>254"); + return 12481 + (b1 - 241) * 65536 + b2 * 256 + b3; } void Serializer::TestSerializer() @@ -493,7 +493,7 @@ int SerializerIterator::getBytesLeft() unsigned char SerializerIterator::get8() { int val; - if(!mSerializer.get8(val, mPos)) throw(0); + if (!mSerializer.get8(val, mPos)) throw std::runtime_error("invalid serializer get"); mPos++; return val; } @@ -501,48 +501,48 @@ unsigned char SerializerIterator::get8() uint16 SerializerIterator::get16() { uint16 val; - if(!mSerializer.get16(val, mPos)) throw(0); - mPos+=16/8; + if (!mSerializer.get16(val, mPos)) throw std::runtime_error("invalid serializer get"); + mPos += 16/8; return val; } uint32 SerializerIterator::get32() { uint32 val; - if(!mSerializer.get32(val, mPos)) throw(0); - mPos+=32/8; + if (!mSerializer.get32(val, mPos)) throw std::runtime_error("invalid serializer get"); + mPos += 32/8; return val; } uint64 SerializerIterator::get64() { uint64 val; - if(!mSerializer.get64(val, mPos)) throw(0); - mPos+=64/8; + if (!mSerializer.get64(val, mPos)) throw std::runtime_error("invalid serializer get"); + mPos += 64/8; return val; } uint128 SerializerIterator::get128() { uint128 val; - if(!mSerializer.get128(val, mPos)) throw(0); - mPos+=128/8; + if (!mSerializer.get128(val, mPos)) throw std::runtime_error("invalid serializer get"); + mPos += 128/8; return val; } uint160 SerializerIterator::get160() { uint160 val; - if(!mSerializer.get160(val, mPos)) throw(0); - mPos+=160/8; + if (!mSerializer.get160(val, mPos)) throw std::runtime_error("invalid serializer get"); + mPos += 160/8; return val; } uint256 SerializerIterator::get256() { uint256 val; - if(!mSerializer.get256(val, mPos)) throw(0); - mPos+=256/8; + if (!mSerializer.get256(val, mPos)) throw std::runtime_error("invalid serializer get"); + mPos += 256/8; return val; } @@ -550,8 +550,8 @@ std::vector SerializerIterator::getVL() { int length; std::vector vl; - if(!mSerializer.getVL(vl, mPos, length)) throw(0); - mPos+=length; + if (!mSerializer.getVL(vl, mPos, length)) throw std::runtime_error("invalid serializer get"); + mPos += length; return vl; } @@ -559,7 +559,7 @@ std::vector SerializerIterator::getTaggedList() { int length; std::vector tl; - if(!mSerializer.getTaggedList(tl, mPos, length)) throw(0); - mPos+=length; + if (!mSerializer.getTaggedList(tl, mPos, length)) throw std::runtime_error("invalid serializer get"); + mPos += length; return tl; } diff --git a/src/TaggedCache.h b/src/TaggedCache.h index 51bc3ab96..f5c501d0a 100644 --- a/src/TaggedCache.h +++ b/src/TaggedCache.h @@ -52,18 +52,14 @@ public: template int TaggedCache::getTargetSize() const { - mLock.lock(); - int ret=mTargetSize; - mLock.unlock(); - return ret; + boost::recursive_mutex::scoped_lock sl(mLock); + return mTargetSize; } template int TaggedCache::getTargetAge() const { - mLock.lock(); - int ret=mTargetAge; - mLock.unlock(); - return ret; + boost::recursive_mutex::scoped_lock sl(mLock); + return mTargetAge; } template int TaggedCache::getCacheSize() @@ -76,28 +72,28 @@ template void TaggedCache::sweep { boost::recursive_mutex::scoped_lock sl(mLock); - if(mCache.size()::iterator cit=mCache.begin(); - while(cit!=mCache.end()) + typename std::map::iterator cit = mCache.begin(); + while (cit != mCache.end()) { - if(cit->second->second.firstsecond->second.first < target) mCache.erase(cit++); else ++cit; } // Pass 2, remove dead objects from map - typename std::map::iterator mit=mMap.begin(); - while(mit!=mMap.end()) + typename std::map::iterator mit = mMap.begin(); + while (mit != mMap.end()) { - if(mit->second->expired()) + if (mit->second->expired()) mMap.erase(mit++); else ++mit; } @@ -108,19 +104,19 @@ template bool TaggedCache::touch boost::recursive_mutex::scoped_lock sl(mLock); // Is the object in the map? - typename std::map::iterator mit=mMap.find(key); - if(mit==mMap.end()) return false; - if(mit->second->expired()) + typename std::map::iterator mit = mMap.find(key); + if (mit == mMap.end()) return false; + if (mit->second->expired()) { // in map, but expired mMap.erase(mit); return false; } // Is the object in the cache? - typename std::map::iterator cit=mCache.find(key); - if(cit!=mCache.end()) + typename std::map::iterator cit = mCache.find(key); + if (cit != mCache.end()) { // in both map and cache - cit->second->first=time(NULL); + cit->second->first = time(NULL); return true; } @@ -133,8 +129,8 @@ template bool TaggedCache::del(c { // Remove from cache, map unaffected boost::recursive_mutex::scoped_lock sl(mLock); - typename std::map::iterator cit=mCache.find(key); - if(cit==mCache.end()) return false; + typename std::map::iterator cit = mCache.find(key); + if (cit == mCache.end()) return false; mCache.erase(cit); return true; } @@ -145,27 +141,27 @@ bool TaggedCache::canonicalize(const key_type& key, boost::shared // Return values: true=we had the data already boost::recursive_mutex::scoped_lock sl(mLock); - typename std::map::iterator mit=mMap.find(key); - if(mit==mMap.end()) + typename std::map::iterator mit = mMap.find(key); + if (mit == mMap.end()) { // not in map mCache.insert(std::make_pair(key, std::make_pair(time(NULL), data))); mMap.insert(std::make_pair(key, data)); return false; } - if(mit->second.expired()) + if (mit->second.expired()) { // in map, but expired - mit->second=data; + mit->second = data; mCache.insert(std::make_pair(key, std::make_pair(time(NULL), data))); return false; } - data=mit->second.lock(); + data = mit->second.lock(); assert(!!data); // Valid in map, is it in cache? - typename std::map::iterator cit=mCache.find(key); - if(cit!=mCache.end()) - cit->second.first=time(NULL); // Yes, refesh + typename std::map::iterator cit = mCache.find(key); + if (cit != mCache.end()) + cit->second.first = time(NULL); // Yes, refesh else // no, add to cache mCache.insert(std::make_pair(key, std::make_pair(time(NULL), data))); @@ -178,20 +174,20 @@ boost::shared_ptr TaggedCache::fetch(const key_type& key) boost::recursive_mutex::scoped_lock sl(mLock); // Is it in the map? - typename std::map::iterator mit=mMap.find(key); - if(mit==mMap.end()) return data_ptr(); // No, we're done - if(mit->second.expired()) + typename std::map::iterator mit = mMap.find(key); + if (mit == mMap.end()) return data_ptr(); // No, we're done + if (mit->second.expired()) { // in map, but expired mMap.erase(mit); return data_ptr(); } - boost::shared_ptr data=mit->second.lock(); + boost::shared_ptr data = mit->second.lock(); // Valid in map, is it in the cache? - typename std::map::iterator cit=mCache.find(key); - if(cit!=mCache.end()) - cit->second.first=time(NULL); // Yes, refresh + typename std::map::iterator cit = mCache.find(key); + if (cit != mCache.end()) + cit->second.first = time(NULL); // Yes, refresh else // No, add to cache mCache.insert(std::make_pair(key, std::make_pair(time(NULL), data)));