Sirikata
|
#include <asyncConnectionGet.hpp>
Classes | |
struct | IndividualQueryData |
Public Types | |
enum | ConnectionState { READY, NEED_NEW_SOCKET, PROCESSING } |
Public Member Functions | |
void | initialize (Sirikata::Network::TCPSocket *socket, boost::asio::ip::tcp::resolver::iterator) |
AsyncConnectionGet::ConnectionState | ready () |
void | get (const CraqDataKey &dataToGet, OSegLookupTraceToken *traceToken) |
void | getBound (const CraqObjectID &obj_dataToGet, OSegLookupTraceToken *traceToken) |
~AsyncConnectionGet () | |
AsyncConnectionGet (SpaceContext *con, Network::IOStrand *str, Network::IOStrand *error_strand, Network::IOStrand *result_strand, AsyncCraqScheduler *master, CraqObjectSegmentation *oseg, const std::tr1::function< void()> &readyStateChangedCb) | |
int | numStillProcessing () |
void | printOutstanding () |
int | runReQuery () |
void | printStatisticsTimesTaken () |
int | getRespCount () |
void | setProcessing () |
indicate that some work has been posted to this connection's strand | |
void | stop () |
Private Types | |
typedef std::tr1::unordered_multimap < std::string, IndividualQueryData * > | MultiOutstandingQueries |
Private Member Functions | |
void | outputLargeOutstanding () |
bool | getQuery (const CraqDataKey &dataToGet) |
void | queryTimedOutCallbackGet (const boost::system::error_code &e, const std::string &searchFor) |
void | queryTimedOutCallbackGetPrint (const boost::system::error_code &e, const std::string &searchFor) |
void | killSequence () |
void | processValueNotFound (std::string dataKey) |
void | processValueFound (std::string dataKey, const CraqEntry &sID) |
void | processStoredValue (std::string dataKey) |
bool | parseValueNotFound (std::string response, std::string &dataKey) |
bool | parseValueValue (std::string response, std::string &dataKey, CraqEntry &sID) |
bool | parseStoredValue (const std::string &response, std::string &dataKey) |
bool | processEntireResponse (std::string response) |
bool | checkStored (std::string &response) |
bool | checkValue (std::string &response) |
bool | checkNotFound (std::string &response) |
bool | checkError (std::string &response) |
size_t | smallestIndex (std::vector< size_t > sizeVec) |
void | connect_handler (const boost::system::error_code &error) |
void | generic_read_stored_not_found_error_handler (const boost::system::error_code &error, std::size_t bytes_transferred, boost::asio::streambuf *sBuff) |
void | set_generic_stored_not_found_error_handler () |
void | read_handler_set (const boost::system::error_code &error, std::size_t bytes_transferred, boost::asio::streambuf *sBuff) |
void | write_some_handler_set (const boost::system::error_code &error, std::size_t bytes_transferred) |
void | write_some_handler_get (const boost::system::error_code &error, std::size_t bytes_transferred) |
void | read_handler_get (const boost::system::error_code &error, std::size_t bytes_transferred, boost::asio::streambuf *sBuff) |
void | clear_all_deadline_timers () |
Private Attributes | |
int | mAllResponseCount |
std::vector< double > | mTimesTaken |
int | mTimesBetweenResults |
bool | mHandlerState |
Sirikata::Network::TCPSocket * | mSocket |
MultiOutstandingQueries | allOutstandingQueries |
volatile ConnectionState | mReady |
std::string | mPrevReadFrag |
SpaceContext * | ctx |
Network::IOStrand * | mStrand |
Network::IOStrand * | mPostErrorsStrand |
Network::IOStrand * | mResultStrand |
AsyncCraqScheduler * | mSchedulerMaster |
CraqObjectSegmentation * | mOSeg |
double | getTime |
int | numGets |
bool | mReceivedStopRequest |
std::tr1::function< void()> | mReadyStateChangedCallback |
typedef std::tr1::unordered_multimap<std::string, IndividualQueryData*> Sirikata::AsyncConnectionGet::MultiOutstandingQueries [private] |
Sirikata::AsyncConnectionGet::~AsyncConnectionGet | ( | ) |
References allOutstandingQueries, mSocket, NEED_NEW_SOCKET, and outputLargeOutstanding().
Sirikata::AsyncConnectionGet::AsyncConnectionGet | ( | SpaceContext * | con, |
Network::IOStrand * | str, | ||
Network::IOStrand * | error_strand, | ||
Network::IOStrand * | result_strand, | ||
AsyncCraqScheduler * | master, | ||
CraqObjectSegmentation * | oseg, | ||
const std::tr1::function< void()> & | readyStateChangedCb | ||
) |
References getTime, mReady, NEED_NEW_SOCKET, and numGets.
bool Sirikata::AsyncConnectionGet::checkError | ( | std::string & | response | ) | [private] |
bool Sirikata::AsyncConnectionGet::checkNotFound | ( | std::string & | response | ) | [private] |
bool Sirikata::AsyncConnectionGet::checkStored | ( | std::string & | response | ) | [private] |
bool Sirikata::AsyncConnectionGet::checkValue | ( | std::string & | response | ) | [private] |
void Sirikata::AsyncConnectionGet::clear_all_deadline_timers | ( | ) | [private] |
References allOutstandingQueries.
Referenced by stop().
void Sirikata::AsyncConnectionGet::connect_handler | ( | const boost::system::error_code & | error | ) | [private] |
References mPostErrorsStrand, mReady, mReadyStateChangedCallback, mReceivedStopRequest, mSocket, NEED_NEW_SOCKET, Sirikata::Network::IOStrand::post(), READY, runReQuery(), and set_generic_stored_not_found_error_handler().
Referenced by initialize().
void Sirikata::AsyncConnectionGet::generic_read_stored_not_found_error_handler | ( | const boost::system::error_code & | error, |
std::size_t | bytes_transferred, | ||
boost::asio::streambuf * | sBuff | ||
) | [private] |
References killSequence(), mHandlerState, mReceivedStopRequest, mSocket, processEntireResponse(), and set_generic_stored_not_found_error_handler().
Referenced by set_generic_stored_not_found_error_handler().
void Sirikata::AsyncConnectionGet::get | ( | const CraqDataKey & | dataToGet, |
OSegLookupTraceToken * | traceToken | ||
) |
References allOutstandingQueries, ctx, Sirikata::AsyncConnectionGet::IndividualQueryData::currentlySearchingFor, Sirikata::AsyncConnectionGet::IndividualQueryData::deadline_timer, Sirikata::AsyncConnectionGet::IndividualQueryData::GET, getQuery(), Sirikata::AsyncConnectionGet::IndividualQueryData::gs, Sirikata::Context::ioService, Sirikata::AsyncConnectionGet::IndividualQueryData::is_tracking, mReady, mReceivedStopRequest, mStrand, Sirikata::OSegLookupTraceToken::OSEG_TRACE_GET_CONNECTION_NETWORK_GET_BEGIN, Sirikata::OSegLookupTraceToken::OSEG_TRACE_GET_CONNECTION_NETWORK_GET_END, PROCESSING, queryTimedOutCallbackGet(), Sirikata::OSegLookupTraceToken::stamp(), Sirikata::STREAM_ASYNC_GET_TIMEOUT_MILLISECONDS, Sirikata::STREAM_DATA_KEY_SUFFIX, Sirikata::AsyncConnectionGet::IndividualQueryData::time_admitted, Sirikata::AsyncConnectionGet::IndividualQueryData::traceToken, Sirikata::AsyncConnectionGet::IndividualQueryData::tracking_number, and Sirikata::Network::IOStrand::wrap().
void Sirikata::AsyncConnectionGet::getBound | ( | const CraqObjectID & | obj_dataToGet, |
OSegLookupTraceToken * | traceToken | ||
) |
References Sirikata::CraqObjectID::cdk.
Referenced by Sirikata::AsyncCraqGet::checkConnections().
bool Sirikata::AsyncConnectionGet::getQuery | ( | const CraqDataKey & | dataToGet | ) | [private] |
References Sirikata::CRAQ_DATA_KEY_QUERY_PREFIX, Sirikata::CRAQ_DATA_KEY_QUERY_SUFFIX, mReady, mReceivedStopRequest, mSocket, PROCESSING, Sirikata::STREAM_DATA_KEY_SUFFIX, and write_some_handler_get().
Referenced by get(), and runReQuery().
int Sirikata::AsyncConnectionGet::getRespCount | ( | ) |
References mAllResponseCount.
void Sirikata::AsyncConnectionGet::initialize | ( | Sirikata::Network::TCPSocket * | socket, |
boost::asio::ip::tcp::resolver::iterator | it | ||
) |
References connect_handler(), mAllResponseCount, mHandlerState, mPrevReadFrag, mReady, mSocket, mStrand, mTimesBetweenResults, PROCESSING, and Sirikata::Network::IOStrand::wrap().
Referenced by Sirikata::AsyncCraqGet::initialize(), and Sirikata::AsyncCraqGet::reInitializeNode().
void Sirikata::AsyncConnectionGet::killSequence | ( | ) | [private] |
int Sirikata::AsyncConnectionGet::numStillProcessing | ( | ) |
References allOutstandingQueries.
void Sirikata::AsyncConnectionGet::outputLargeOutstanding | ( | ) | [private] |
References allOutstandingQueries, Sirikata::Time::epoch(), Sirikata::AsyncConnectionGet::IndividualQueryData::GET, and Sirikata::Time::local().
Referenced by ~AsyncConnectionGet().
bool Sirikata::AsyncConnectionGet::parseStoredValue | ( | const std::string & | response, |
std::string & | dataKey | ||
) | [private] |
References Sirikata::CRAQ_DATA_KEY_SIZE, Sirikata::STREAM_CRAQ_STORED_RESP, and Sirikata::STREAM_CRAQ_STORED_RESP_SIZE.
Referenced by checkStored().
bool Sirikata::AsyncConnectionGet::parseValueNotFound | ( | std::string | response, |
std::string & | dataKey | ||
) | [private] |
References Sirikata::CRAQ_DATA_KEY_SIZE, Sirikata::CRAQ_NOT_FOUND_RESP, and Sirikata::STREAM_CRAQ_NOT_FOUND_RESP_SIZE.
Referenced by checkNotFound().
bool Sirikata::AsyncConnectionGet::parseValueValue | ( | std::string | response, |
std::string & | dataKey, | ||
CraqEntry & | sID | ||
) | [private] |
void Sirikata::AsyncConnectionGet::printOutstanding | ( | ) |
References allOutstandingQueries.
void Sirikata::AsyncConnectionGet::printStatisticsTimesTaken | ( | ) |
References mTimesTaken.
bool Sirikata::AsyncConnectionGet::processEntireResponse | ( | std::string | response | ) | [private] |
void Sirikata::AsyncConnectionGet::processStoredValue | ( | std::string | dataKey | ) | [private] |
References allOutstandingQueries, Sirikata::CRAQ_DATA_KEY_SIZE, Sirikata::CraqObjectSegmentation::craqSetResult(), mOSeg, mReceivedStopRequest, mResultStrand, Sirikata::CraqOperationResult::objID, Sirikata::Network::IOStrand::post(), Sirikata::CraqOperationResult::SET, and Sirikata::AsyncConnectionGet::IndividualQueryData::SET.
Referenced by checkStored().
void Sirikata::AsyncConnectionGet::processValueFound | ( | std::string | dataKey, |
const CraqEntry & | sID | ||
) | [private] |
References allOutstandingQueries, Sirikata::CRAQ_DATA_KEY_SIZE, Sirikata::CraqObjectSegmentation::craqGetResult(), Sirikata::CraqOperationResult::GET, Sirikata::AsyncConnectionGet::IndividualQueryData::GET, mOSeg, Sirikata::CraqObjectSegmentation::mOSegQueueLen, mReceivedStopRequest, mResultStrand, Sirikata::CraqOperationResult::objID, Sirikata::OSegLookupTraceToken::OSEG_TRACE_GET_CONNECTION_NETWORK_RECEIVED, and Sirikata::Network::IOStrand::post().
Referenced by checkValue().
void Sirikata::AsyncConnectionGet::processValueNotFound | ( | std::string | dataKey | ) | [private] |
References allOutstandingQueries, Sirikata::CRAQ_DATA_KEY_SIZE, Sirikata::CraqObjectSegmentation::craqGetResult(), Sirikata::CraqOperationResult::GET, Sirikata::AsyncConnectionGet::IndividualQueryData::GET, mOSeg, Sirikata::CraqObjectSegmentation::mOSegQueueLen, mReceivedStopRequest, mResultStrand, Sirikata::CraqOperationResult::objID, and Sirikata::Network::IOStrand::post().
Referenced by checkNotFound().
void Sirikata::AsyncConnectionGet::queryTimedOutCallbackGet | ( | const boost::system::error_code & | e, |
const std::string & | searchFor | ||
) | [private] |
References allOutstandingQueries, Sirikata::CRAQ_DATA_KEY_SIZE, Sirikata::AsyncCraqScheduler::erroredGetValue(), Sirikata::CraqOperationResult::GET, Sirikata::AsyncConnectionGet::IndividualQueryData::GET, mPostErrorsStrand, mReceivedStopRequest, mSchedulerMaster, Sirikata::CraqOperationResult::objID, and Sirikata::Network::IOStrand::post().
Referenced by get().
void Sirikata::AsyncConnectionGet::queryTimedOutCallbackGetPrint | ( | const boost::system::error_code & | e, |
const std::string & | searchFor | ||
) | [private] |
References mReceivedStopRequest.
void Sirikata::AsyncConnectionGet::read_handler_get | ( | const boost::system::error_code & | error, |
std::size_t | bytes_transferred, | ||
boost::asio::streambuf * | sBuff | ||
) | [private] |
void Sirikata::AsyncConnectionGet::read_handler_set | ( | const boost::system::error_code & | error, |
std::size_t | bytes_transferred, | ||
boost::asio::streambuf * | sBuff | ||
) | [private] |
AsyncConnectionGet::ConnectionState Sirikata::AsyncConnectionGet::ready | ( | ) |
References mReady.
int Sirikata::AsyncConnectionGet::runReQuery | ( | ) |
References allOutstandingQueries, getQuery(), mHandlerState, and mReceivedStopRequest.
Referenced by connect_handler().
void Sirikata::AsyncConnectionGet::set_generic_stored_not_found_error_handler | ( | ) | [private] |
References generic_read_stored_not_found_error_handler(), mHandlerState, mReceivedStopRequest, mSocket, mStrand, and Sirikata::Network::IOStrand::wrap().
Referenced by connect_handler(), and generic_read_stored_not_found_error_handler().
void Sirikata::AsyncConnectionGet::setProcessing | ( | ) |
indicate that some work has been posted to this connection's strand
References mReady, and PROCESSING.
size_t Sirikata::AsyncConnectionGet::smallestIndex | ( | std::vector< size_t > | sizeVec | ) | [private] |
Referenced by checkError(), checkNotFound(), checkStored(), and checkValue().
void Sirikata::AsyncConnectionGet::stop | ( | ) |
References clear_all_deadline_timers(), mReceivedStopRequest, mSocket, mStrand, and Sirikata::Network::IOStrand::post().
Referenced by Sirikata::AsyncCraqGet::stop().
void Sirikata::AsyncConnectionGet::write_some_handler_get | ( | const boost::system::error_code & | error, |
std::size_t | bytes_transferred | ||
) | [private] |
References killSequence(), mPostErrorsStrand, mReady, mReadyStateChangedCallback, mReceivedStopRequest, Sirikata::Network::IOStrand::post(), and READY.
Referenced by getQuery().
void Sirikata::AsyncConnectionGet::write_some_handler_set | ( | const boost::system::error_code & | error, |
std::size_t | bytes_transferred | ||
) | [private] |
References killSequence(), and mReceivedStopRequest.
SpaceContext* Sirikata::AsyncConnectionGet::ctx [private] |
Referenced by get().
double Sirikata::AsyncConnectionGet::getTime [private] |
Referenced by AsyncConnectionGet().
int Sirikata::AsyncConnectionGet::mAllResponseCount [private] |
Referenced by getRespCount(), and initialize().
bool Sirikata::AsyncConnectionGet::mHandlerState [private] |
Referenced by processStoredValue(), processValueFound(), and processValueNotFound().
Referenced by connect_handler(), killSequence(), queryTimedOutCallbackGet(), and write_some_handler_get().
std::string Sirikata::AsyncConnectionGet::mPrevReadFrag [private] |
Referenced by initialize(), and processEntireResponse().
volatile ConnectionState Sirikata::AsyncConnectionGet::mReady [private] |
Referenced by AsyncConnectionGet(), connect_handler(), get(), getQuery(), initialize(), killSequence(), ready(), setProcessing(), and write_some_handler_get().
std::tr1::function<void()> Sirikata::AsyncConnectionGet::mReadyStateChangedCallback [private] |
Referenced by connect_handler(), killSequence(), and write_some_handler_get().
bool Sirikata::AsyncConnectionGet::mReceivedStopRequest [private] |
Referenced by connect_handler(), generic_read_stored_not_found_error_handler(), get(), getQuery(), killSequence(), processEntireResponse(), processStoredValue(), processValueFound(), processValueNotFound(), queryTimedOutCallbackGet(), queryTimedOutCallbackGetPrint(), runReQuery(), set_generic_stored_not_found_error_handler(), stop(), write_some_handler_get(), and write_some_handler_set().
Referenced by processStoredValue(), processValueFound(), and processValueNotFound().
Referenced by queryTimedOutCallbackGet().
Referenced by get(), initialize(), set_generic_stored_not_found_error_handler(), and stop().
int Sirikata::AsyncConnectionGet::mTimesBetweenResults [private] |
Referenced by initialize().
std::vector<double> Sirikata::AsyncConnectionGet::mTimesTaken [private] |
Referenced by printStatisticsTimesTaken().
int Sirikata::AsyncConnectionGet::numGets [private] |
Referenced by AsyncConnectionGet().