start reworking API

This commit is contained in:
jed
2012-10-24 09:47:09 -07:00
parent 5e0f4c0102
commit 15fcbcd4c8
4 changed files with 110 additions and 27 deletions

View File

@@ -78,6 +78,7 @@ protected:
boost::unordered_set<InfoSub*> mSubLedger; // ledger accepteds
boost::unordered_set<InfoSub*> mSubLedgerAccounts; // ledger accepteds + affected accounts
boost::unordered_set<InfoSub*> mSubTransaction; // all transactions
boost::unordered_set<InfoSub*> mSubTxMeta; // all transaction meta
// subInfoMapType mSubTransactionAccounts;
void setMode(OperatingMode);

View File

@@ -1813,6 +1813,12 @@ Json::Value RPCServer::doRippleLinesGet(const Json::Value &params)
return ret;
}
// submit any transaction to the network
Json::Value RPCServer::doSubmit(const Json::Value& params)
{
}
// send regular_seed paying_account account_id amount [currency] [issuer] [send_max] [send_currency] [send_issuer]
Json::Value RPCServer::doSend(const Json::Value& params)
{

View File

@@ -160,6 +160,8 @@ private:
Json::Value doTransitSet(const Json::Value& params);
Json::Value doTx(const Json::Value& params);
Json::Value doTxHistory(const Json::Value& params);
Json::Value doSubmit(const Json::Value& params);
Json::Value doUnlAdd(const Json::Value& params);
Json::Value doUnlDelete(const Json::Value& params);
@@ -186,6 +188,9 @@ private:
Json::Value doLogin(const Json::Value& params);
// deprecated
public:
static pointer create(boost::asio::io_service& io_service, NetworkOPs* mNetOps)
{

View File

@@ -89,6 +89,11 @@ public:
void doTransactionEntry(Json::Value& jvResult, const Json::Value& jvRequest);
// Streaming Commands
void doSubscribe(Json::Value& jvResult, const Json::Value& jvRequest);
void doUnsubscribe(Json::Value& jvResult, const Json::Value& jvRequest);
// deprecated
void doAccountInfoSubscribe(Json::Value& jvResult, const Json::Value& jvRequest);
void doAccountInfoUnsubscribe(Json::Value& jvResult, const Json::Value& jvRequest);
void doAccountTransactionSubscribe(Json::Value& jvResult, const Json::Value& jvRequest);
@@ -313,18 +318,8 @@ Json::Value WSConnection::invokeCommand(const Json::Value& jvRequest)
{ "ledger_entry", &WSConnection::doLedgerEntry },
{ "submit", &WSConnection::doSubmit },
{ "transaction_entry", &WSConnection::doTransactionEntry },
// Streaming commands:
{ "account_info_subscribe", &WSConnection::doAccountInfoSubscribe },
{ "account_info_unsubscribe", &WSConnection::doAccountInfoUnsubscribe },
{ "account_transaction_subscribe", &WSConnection::doAccountTransactionSubscribe },
{ "account_transaction_unsubscribe", &WSConnection::doAccountTransactionUnsubscribe },
{ "ledger_accounts_subscribe", &WSConnection::doLedgerAccountsSubcribe },
{ "ledger_accounts_unsubscribe", &WSConnection::doLedgerAccountsUnsubscribe },
{ "server_subscribe", &WSConnection::doServerSubscribe },
{ "server_unsubscribe", &WSConnection::doServerUnsubscribe },
{ "transaction_subscribe", &WSConnection::doTransactionSubcribe },
{ "transaction_unsubscribe", &WSConnection::doTransactionUnsubscribe },
{ "subscribe", &WSConnection::doSubscribe },
{ "unsubscribe", &WSConnection::doUnsubscribe },
};
if (!jvRequest.isMember("command"))
@@ -403,6 +398,96 @@ boost::unordered_set<NewcoinAddress> WSConnection::parseAccountIds(const Json::V
// Commands
//
/*
server : Sends a message anytime the server status changes such as network connectivity.
ledger : Sends a message at every ledger close.
tx_meta : Sends the effects of all the transactions every time a ledger closes.
transactions : Sends a message for every transaction that makes it into a ledger.
rt_transactions
*/
void WSConnection::doSubscribe(Json::Value& jvResult, const Json::Value& jvRequest)
{
if (jvRequest.isMember("streams"))
{
for (Json::Value::const_iterator it = jvRequest["streams"].begin(); it != jvRequest["streams"].end(); it++)
{
if ((*it).isString() )
{
std::string streamName=(*it).asString();
if(streamName=="server")
{
mNetwork.subLedgerAccounts(this)
}else if(streamName=="ledger")
{
mNetwork.subLedgerAccounts(this)
}else if(streamName=="tx_meta")
{
}else if(streamName=="transactions")
{
}else if(streamName=="rt_transactions")
{
}else
{
jvResult["error"] = str(boost::format("Unknown stream: %s") % streamName);
}
}else
{
jvResult["error"] = "malformedSteam";
}
}
}
if (jvRequest.isMember("rt_accounts"))
{
boost::unordered_set<NewcoinAddress> usnaAccoundIds = parseAccountIds(jvRequest["rt_accounts"]);
if (usnaAccoundIds.empty())
{
jvResult["error"] = "malformedAccount";
}else
{
boost::mutex::scoped_lock sl(mLock);
BOOST_FOREACH(const NewcoinAddress& naAccountID, usnaAccoundIds)
{
mSubAccountInfo.insert(naAccountID);
}
mNetwork.subAccountInfo(this, usnaAccoundIds);
}
}
if (jvRequest.isMember("accounts"))
{
boost::unordered_set<NewcoinAddress> usnaAccoundIds = parseAccountIds(jvRequest["accounts"]);
if (usnaAccoundIds.empty())
{
jvResult["error"] = "malformedAccount";
}else
{
boost::mutex::scoped_lock sl(mLock);
BOOST_FOREACH(const NewcoinAddress& naAccountID, usnaAccoundIds)
{
mSubAccountInfo.insert(naAccountID);
}
mNetwork.subAccountInfo(this, usnaAccoundIds);
}
}
}
void WSConnection::doUnsubscribe(Json::Value& jvResult, const Json::Value& jvRequest)
{
}
void WSConnection::doAccountInfoSubscribe(Json::Value& jvResult, const Json::Value& jvRequest)
{
if (!jvRequest.isMember("accounts"))
@@ -417,21 +502,7 @@ void WSConnection::doAccountInfoSubscribe(Json::Value& jvResult, const Json::Val
{
boost::unordered_set<NewcoinAddress> usnaAccoundIds = parseAccountIds(jvRequest["accounts"]);
if (usnaAccoundIds.empty())
{
jvResult["error"] = "malformedAccount";
}
else
{
boost::mutex::scoped_lock sl(mLock);
BOOST_FOREACH(const NewcoinAddress& naAccountID, usnaAccoundIds)
{
mSubAccountInfo.insert(naAccountID);
}
mNetwork.subAccountInfo(this, usnaAccoundIds);
}
}
}