//------------------------------------------------------------------------------ /* Copyright (c) 2011-2013, OpenCoin, Inc. */ //============================================================================== // This is the primary interface into the "client" portion of the program. // Code that wants to do normal operations on the network such as // creating and monitoring accounts, creating transactions, and so on // should use this interface. The RPC code will primarily be a light wrapper // over this code. // Eventually, it will check the node's operating mode (synched, unsynched, // etectera) and defer to the correct means of processing. The current // code assumes this node is synched (and will continue to do so until // there's a functional network. // VFALCO TODO Figure out how to clean up these globals uint64 InfoSub::sSeq = 0; boost::mutex InfoSub::sSeqLock; InfoSub::InfoSub () { boost::mutex::scoped_lock sl (sSeqLock); mSeq = ++sSeq; } InfoSub::~InfoSub () { NetworkOPs& ops = getApp().getOPs (); ops.unsubTransactions (mSeq); ops.unsubRTTransactions (mSeq); ops.unsubLedger (mSeq); ops.unsubServer (mSeq); ops.unsubAccount (mSeq, mSubAccountInfo, true); ops.unsubAccount (mSeq, mSubAccountInfo, false); } void InfoSub::send (const Json::Value& jvObj, const std::string& sObj, bool broadcast) { send (jvObj, broadcast); } uint64 InfoSub::getSeq () { return mSeq; } void InfoSub::onSendEmpty () { } void InfoSub::insertSubAccountInfo (RippleAddress addr, uint32 uLedgerIndex) { boost::mutex::scoped_lock sl (mLockInfo); mSubAccountInfo.insert (addr); } void InfoSub::clearPathRequest () { mPathRequest.reset (); } void InfoSub::setPathRequest (const boost::shared_ptr& req) { mPathRequest = req; } const boost::shared_ptr& InfoSub::getPathRequest () { return mPathRequest; }