source: ntrip/trunk/GnssCenter/map_stations/thriftclient.cpp@ 5431

Last change on this file since 5431 was 5431, checked in by mervart, 9 years ago
File size: 3.7 KB
Line 
1
2#include <iostream>
3#include <iomanip>
4#include <sstream>
5#include <vector>
6
7#include "thriftclient.h"
8#include "map_stations.h"
9
10using namespace apache::thrift;
11using namespace apache::thrift::protocol;
12using namespace apache::thrift::transport;
13
14using namespace com::gpssolutions::rtnet;
15using namespace std;
16using namespace boost;
17
18// Constructor
19//////////////////////////////////////////////////////////////////////////////
20t_thriftClient::t_thriftClient(GnssCenter::t_map_stations* parent) {
21 _stop = false;
22 _parent = parent;
23}
24
25// Destructor
26//////////////////////////////////////////////////////////////////////////////
27t_thriftClient::~t_thriftClient() {
28}
29
30// Run (virtual)
31//////////////////////////////////////////////////////////////////////////////
32void t_thriftClient::run() {
33
34 string host = "rtnet.rtcm-ntrip.org";
35 int port = 7777;
36
37 shared_ptr<TSocket> socket(new TSocket(host, port));
38 shared_ptr<TTransport> transport(new TBufferedTransport(socket));
39 shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
40 shared_ptr<RtnetDataIf> dataHandler(new t_thriftHandler(_parent));
41 shared_ptr<TProcessor> processor(new RtnetDataProcessor(dataHandler));
42
43 try {
44 transport->open();
45 while (true) {
46 {
47 QMutexLocker locker(&_mutex);
48 if (_stop) {
49 break;
50 }
51 }
52 if (processor->process(protocol,protocol,0) == 0) {
53 break;
54 }
55 }
56 transport->close();
57 }
58 catch (TException& e) {
59 cerr << "Caught an exception generated by Thrift: " << e.what() << endl;
60 }
61 catch (...) {
62 cerr << "Unknown exception" << endl;
63 }
64}
65
66// Constructor
67//////////////////////////////////////////////////////////////////////////////
68t_thriftHandler::t_thriftHandler(GnssCenter::t_map_stations* parent) {
69 _parent = parent;
70}
71
72// Destructor
73//////////////////////////////////////////////////////////////////////////////
74t_thriftHandler::~t_thriftHandler() {
75}
76
77// Handle Satellite Positions
78//////////////////////////////////////////////////////////////////////////////
79void t_thriftHandler::
80handleSatelliteXYZ(const vector<SatelliteXYZ>& svXYZList) {
81 cout.setf(ios::fixed);
82 for (unsigned ii = 0; ii < svXYZList.size(); ii++) {
83// const SatelliteXYZ& sat = svXYZList[ii];
84// cout << unsigned(sat.ID) << ' '
85// << setprecision(3) << sat.xyz.x << ' '
86// << setprecision(3) << sat.xyz.y << ' '
87// << setprecision(3) << sat.xyz.z << endl;
88 }
89// cout << endl;
90}
91
92// Handle Station Info
93//////////////////////////////////////////////////////////////////////////////
94void t_thriftHandler::
95handleStationInfo(const vector<StationInfo>& stationList) {
96 for (unsigned ii = 0; ii < stationList.size(); ii++) {
97 const StationInfo& staInfo = stationList[ii];
98 _stationCrd[staInfo.ID]._x = staInfo.xyz.x;
99 _stationCrd[staInfo.ID]._y = staInfo.xyz.y;
100 _stationCrd[staInfo.ID]._z = staInfo.xyz.z;
101 }
102}
103
104// Handle Epoch Results
105//////////////////////////////////////////////////////////////////////////////
106void t_thriftHandler::
107handleEpochResults(const RtnetEpoch& epoch) {
108 vector<t_thriftResult*>* results = new vector<t_thriftResult*>;
109 for (unsigned ii = 0; ii < epoch.stationResultList.size(); ii++) {
110 const StationResults& staRes = epoch.stationResultList[ii];
111 t_thriftResult* res = new t_thriftResult;
112 res->_name = staRes.stationName;
113 res->_nGPS = staRes.nsv_gps_used;
114 res->_nGLO = staRes.nsv_glonass_used;
115 if (_stationCrd.find(staRes.stationName) != _stationCrd.end()) {
116 res->_x = _stationCrd[staRes.stationName]._x;
117 res->_y = _stationCrd[staRes.stationName]._y;
118 res->_z = _stationCrd[staRes.stationName]._z;
119 }
120 results->push_back(res);
121 }
122 _parent->putThriftResults(results);
123}
Note: See TracBrowser for help on using the repository browser.