mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Moved cpp code to src/cpp and js code to src/js.
This commit is contained in:
61
src/cpp/ripple/SNTPClient.h
Normal file
61
src/cpp/ripple/SNTPClient.h
Normal file
@@ -0,0 +1,61 @@
|
||||
#ifndef __SNTPCLIENT__
|
||||
#define __SNTPCLIENT__
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <list>
|
||||
|
||||
#include <boost/thread/mutex.hpp>
|
||||
#include <boost/asio.hpp>
|
||||
|
||||
#include "types.h"
|
||||
|
||||
class SNTPQuery
|
||||
{
|
||||
public:
|
||||
bool mReceivedReply;
|
||||
time_t mLocalTimeSent;
|
||||
uint32 mQueryNonce;
|
||||
|
||||
SNTPQuery(time_t j = (time_t) -1) : mReceivedReply(false), mLocalTimeSent(j) { ; }
|
||||
};
|
||||
|
||||
class SNTPClient
|
||||
{
|
||||
protected:
|
||||
std::map<boost::asio::ip::udp::endpoint, SNTPQuery> mQueries;
|
||||
boost::mutex mLock;
|
||||
|
||||
boost::asio::ip::udp::socket mSocket;
|
||||
boost::asio::deadline_timer mTimer;
|
||||
boost::asio::ip::udp::resolver mResolver;
|
||||
|
||||
std::vector< std::pair<std::string, time_t> > mServers;
|
||||
|
||||
int mOffset;
|
||||
time_t mLastOffsetUpdate;
|
||||
std::list<int> mOffsetList;
|
||||
|
||||
std::vector<uint8_t> mReceiveBuffer;
|
||||
boost::asio::ip::udp::endpoint mReceiveEndpoint;
|
||||
|
||||
void receivePacket(const boost::system::error_code& error, std::size_t bytes);
|
||||
void resolveComplete(const boost::system::error_code& error, boost::asio::ip::udp::resolver::iterator iterator);
|
||||
void sentPacket(boost::shared_ptr<std::string>, const boost::system::error_code&, std::size_t);
|
||||
void timerEntry(const boost::system::error_code&);
|
||||
void sendComplete(const boost::system::error_code& error, std::size_t bytesTransferred);
|
||||
void processReply();
|
||||
|
||||
public:
|
||||
SNTPClient(boost::asio::io_service& service);
|
||||
void init(const std::vector<std::string>& servers);
|
||||
void addServer(const std::string& mServer);
|
||||
|
||||
void queryAll();
|
||||
bool doQuery();
|
||||
bool getOffset(int& offset);
|
||||
};
|
||||
|
||||
#endif
|
||||
// vim:ts=4
|
||||
Reference in New Issue
Block a user