00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "pStatMonitor.h"
00016
00017 #include "pStatCollectorDef.h"
00018
00019
00020
00021
00022
00023
00024
00025 PStatMonitor::
00026 PStatMonitor(PStatServer *server) : _server(server) {
00027 _client_known = false;
00028 }
00029
00030
00031
00032
00033
00034
00035 PStatMonitor::
00036 ~PStatMonitor() {
00037 }
00038
00039
00040
00041
00042
00043
00044
00045
00046 void PStatMonitor::
00047 hello_from(const string &hostname, const string &progname) {
00048 _client_known = true;
00049 _client_hostname = hostname;
00050 _client_progname = progname;
00051 got_hello();
00052 }
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063 void PStatMonitor::
00064 bad_version(const string &hostname, const string &progname,
00065 int client_major, int client_minor,
00066 int server_major, int server_minor) {
00067 _client_known = true;
00068 _client_hostname = hostname;
00069 _client_progname = progname;
00070 got_bad_version(client_major, client_minor,
00071 server_major, server_minor);
00072 }
00073
00074
00075
00076
00077
00078
00079
00080 void PStatMonitor::
00081 set_client_data(PStatClientData *client_data) {
00082 _client_data = client_data;
00083 initialized();
00084 }
00085
00086
00087
00088
00089
00090
00091
00092 bool PStatMonitor::
00093 is_alive() const {
00094 if (_client_data.is_null()) {
00095
00096 return false;
00097 }
00098 return _client_data->is_alive();
00099 }
00100
00101
00102
00103
00104
00105
00106 void PStatMonitor::
00107 close() {
00108 if (!_client_data.is_null()) {
00109 _client_data->close();
00110 }
00111 }
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122 const LRGBColor &PStatMonitor::
00123 get_collector_color(int collector_index) {
00124 Colors::iterator ci;
00125 ci = _colors.find(collector_index);
00126 if (ci != _colors.end()) {
00127 return (*ci).second;
00128 }
00129
00130
00131 if (!_client_data.is_null() &&
00132 _client_data->has_collector(collector_index)) {
00133 const PStatCollectorDef &def =
00134 _client_data->get_collector_def(collector_index);
00135
00136 LRGBColor sc(def._suggested_color.r,
00137 def._suggested_color.g,
00138 def._suggested_color.b);
00139 if (sc != LRGBColor::zero()) {
00140 ci = _colors.insert(Colors::value_type(collector_index, sc)).first;
00141 return (*ci).second;
00142 }
00143
00144
00145
00146
00147 string fullname = _client_data->get_collector_fullname(collector_index);
00148 unsigned int hash = 0;
00149 for (string::const_iterator ci = fullname.begin(); ci != fullname.end(); ++ci) {
00150 hash = hash * 37 + (unsigned int)(*ci);
00151 }
00152 srand(hash);
00153 }
00154
00155
00156 LRGBColor random_color;
00157 random_color[0] = (double)rand() / (double)RAND_MAX;
00158 random_color[1] = (double)rand() / (double)RAND_MAX;
00159 random_color[2] = (double)rand() / (double)RAND_MAX;
00160
00161 ci = _colors.insert(Colors::value_type(collector_index, random_color)).first;
00162 return (*ci).second;
00163 }
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173 PStatView &PStatMonitor::
00174 get_view(int thread_index) {
00175 Views::iterator vi;
00176 vi = _views.find(thread_index);
00177 if (vi == _views.end()) {
00178 vi = _views.insert(Views::value_type(thread_index, PStatView())).first;
00179 (*vi).second.set_thread_data(_client_data->get_thread_data(thread_index));
00180 }
00181 return (*vi).second;
00182 }
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192 PStatView &PStatMonitor::
00193 get_level_view(int collector_index, int thread_index) {
00194 LevelViews::iterator lvi;
00195 lvi = _level_views.find(collector_index);
00196 if (lvi == _level_views.end()) {
00197 lvi = _level_views.insert(LevelViews::value_type(collector_index, Views())).first;
00198 }
00199 Views &views = (*lvi).second;
00200
00201 Views::iterator vi;
00202 vi = views.find(thread_index);
00203 if (vi == views.end()) {
00204 vi = views.insert(Views::value_type(thread_index, PStatView())).first;
00205 (*vi).second.set_thread_data(_client_data->get_thread_data(thread_index));
00206 (*vi).second.constrain(collector_index, true);
00207 }
00208 return (*vi).second;
00209 }
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222 void PStatMonitor::
00223 initialized() {
00224 }
00225
00226
00227
00228
00229
00230
00231
00232
00233 void PStatMonitor::
00234 got_hello() {
00235 }
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248 void PStatMonitor::
00249 got_bad_version(int, int, int, int) {
00250 }
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263 void PStatMonitor::
00264 new_collector(int) {
00265 }
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278 void PStatMonitor::
00279 new_thread(int) {
00280 }
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293 void PStatMonitor::
00294 new_data(int, int) {
00295 }
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305 void PStatMonitor::
00306 lost_connection() {
00307 }
00308
00309
00310
00311
00312
00313
00314
00315
00316 void PStatMonitor::
00317 idle() {
00318 }
00319
00320
00321
00322
00323
00324
00325
00326 bool PStatMonitor::
00327 has_idle() {
00328 return false;
00329 }
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342 bool PStatMonitor::
00343 is_thread_safe() {
00344 return false;
00345 }
00346
00347
00348
00349
00350
00351
00352 void PStatMonitor::
00353 user_guide_bars_changed() {
00354 }