00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #include "OvlVis.h"
00040
00041 namespace ariba {
00042 namespace utility {
00043
00044
00045
00046
00047
00048 use_logging_cpp(OvlVis);
00049
00050 OvlVis::OvlVis() : socket(io_service), socketOpened(false) {
00051
00052 if( ! Configuration::instance().exists("DEMO_OvlVisIP") ) return;
00053 if( ! Configuration::instance().exists("DEMO_OvlVisPort") ) return;
00054
00055 string serverIP = Configuration::instance().read<string>("DEMO_OvlVisIP");
00056 string serverPort = Configuration::instance().read<string>("DEMO_OvlVisPort");
00057 if( serverIP.length() == 0 || serverPort.length() == 0) return;
00058
00059 logging_debug( "connecting to ovlvis " + serverIP + " on " + serverPort );
00060
00061 tcp::resolver resolver(io_service);
00062 tcp::resolver::query query(
00063 serverIP,
00064 serverPort,
00065 tcp::resolver::query::passive |
00066 tcp::resolver::query::address_configured |
00067 tcp::resolver::query::numeric_service);
00068
00069 tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
00070 tcp::resolver::iterator end;
00071
00072 boost::system::error_code error = boost::asio::error::host_not_found;
00073 while (error && endpoint_iterator != end){
00074 socket.close();
00075 socket.connect(*endpoint_iterator++, error);
00076 }
00077
00078 if (error){
00079 logging_warn( "OvlVis could not connect to GUI" );
00080 } else {
00081 socketOpened = true;
00082 }
00083 }
00084
00085 OvlVis::~OvlVis(){
00086
00087 socket.close();
00088
00089 }
00090
00091 void OvlVis::sendMessage( const string msg, NETWORK_ID nid ) {
00092
00093 sendSocket( msg );
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116 }
00117
00118 void OvlVis::sendSocket(const string msg){
00119 if( socket.is_open() && socketOpened )
00120 socket.send( boost::asio::buffer(msg) );
00121 }
00122
00123
00124
00125
00126
00127 void OvlVis::visCreate(
00128 NETWORK_ID network,
00129 NodeID& node,
00130 string nodename,
00131 string info
00132 ){
00133
00134 ostringstream out;
00135
00136 out << "VisMsgCreate" << ";"
00137 << Helper::ultos(network) << ";"
00138 << node.toString() << ";"
00139 << nodename << ";"
00140 << "" << ";"
00141 << "" << ";"
00142 << "" << ";"
00143 << "0" << ";"
00144 << info << std::endl;
00145
00146 sendMessage( out.str(), network );
00147 }
00148
00149 void OvlVis::visChangeStatus(
00150 NETWORK_ID network,
00151 NodeID& node,
00152 bool enable,
00153 string info
00154 ){
00155
00156 ostringstream out;
00157
00158 out << "VisMsgChangeStatus" << ";"
00159 << Helper::ultos(network) << ";"
00160 << node.toString() << ";"
00161 << (enable ? "1" : "0") << ";"
00162 << info << std::endl;
00163
00164 sendMessage( out.str(), network );
00165 }
00166
00167 void OvlVis::visConnect(
00168 NETWORK_ID network,
00169 NodeID& srcnode,
00170 NodeID& destnode,
00171 string info
00172 ){
00173
00174
00175
00176
00177 if( networkLinks.exists( network, NodePair(srcnode,destnode) )) return;
00178
00179 ostringstream out;
00180 unsigned long edgekey = networkLinks.insert( network, NodePair(srcnode,destnode) );
00181
00182 out << "VisMsgConnect" << ";"
00183 << Helper::ultos(network) << ";"
00184 << edgekey << ";"
00185 << srcnode.toString() << ";"
00186 << destnode.toString() << ";"
00187 << "0" << ";"
00188 << info << std::endl;
00189
00190 sendMessage( out.str(), network );
00191 }
00192
00193 void OvlVis::visDisconnect(
00194 NETWORK_ID network,
00195 NodeID& srcnode,
00196 NodeID& destnode,
00197 string info
00198 ){
00199
00200 if( !networkLinks.exists(network, NodePair(srcnode, destnode)) ) return;
00201
00202 unsigned long edgekey = networkLinks.get( network, NodePair(srcnode, destnode) );
00203 networkLinks.remove( network, NodePair(srcnode, destnode) );
00204
00205 ostringstream out;
00206 out << "VisMsgDisconnect" << ";"
00207 << Helper::ultos(network) << ";"
00208 << Helper::ultos(edgekey) << ";"
00209 << info << std::endl;
00210
00211 sendMessage( out.str(), network );
00212 }
00213
00214 void OvlVis::visFailedConnect(
00215 NETWORK_ID network,
00216 NodeID& srcnode,
00217 NodeID& destnode,
00218 string info
00219 ){
00220
00221 ostringstream out;
00222
00223 out << "VisMsgFailedConnect" << ";"
00224 << Helper::ultos(network) << ";"
00225 << srcnode.toString() << ";"
00226 << destnode.toString() << ";"
00227 << info << std::endl;
00228
00229 sendMessage( out.str(), network );
00230 }
00231
00232 void OvlVis::visShutdown(
00233 NETWORK_ID network,
00234 NodeID& node,
00235 string info
00236 ){
00237
00238 ostringstream out;
00239
00240 out << "VisMsgShutdown" << ";"
00241 << Helper::ultos(network) << ";"
00242 << node.toString() << ";"
00243 << info << std::endl;
00244
00245 sendMessage( out.str(), network );
00246 }
00247
00248
00249
00250
00251
00252 void OvlVis::visChangeNodeColor (
00253 NETWORK_ID network,
00254 NodeID& node,
00255 unsigned char r,
00256 unsigned char g,
00257 unsigned char b
00258 ){
00259
00260 ostringstream out;
00261
00262 out << "VisMsgChangeNodeColor" << ";"
00263 << Helper::ultos(network) << ";"
00264 << node.toString() << ";"
00265 << ariba::utility::Helper::ultos(r) << ";"
00266 << ariba::utility::Helper::ultos(g) << ";"
00267 << ariba::utility::Helper::ultos(b) << std::endl;
00268
00269 sendMessage( out.str(), network );
00270 }
00271
00272 void OvlVis::visChangeNodeColor (
00273 NETWORK_ID network,
00274 NodeID& node,
00275 NODE_COLORS color
00276 ){
00277
00278 unsigned char r = 0;
00279 unsigned char g = 0;
00280 unsigned char b = 0;
00281
00282 switch( color ) {
00283 case NODE_COLORS_GREY: r = 128; g = 128; b = 128; break;
00284 case NODE_COLORS_GREEN: r = 0; g = 200; b = 0; break;
00285 case NODE_COLORS_RED: r = 255; g = 0; b = 0; break;
00286 }
00287
00288 visChangeNodeColor( network, node, r, g, b );
00289 }
00290
00291 void OvlVis::visChangeNodeIcon (
00292 NETWORK_ID network,
00293 NodeID& node,
00294 ICON_ID icon
00295 ){
00296
00297 ostringstream out;
00298
00299 out << "VisMsgChangeNodeIcon" << ";"
00300 << Helper::ultos(network) << ";"
00301 << node.toString() << ";"
00302 << Helper::ultos((unsigned int)icon) << std::endl;
00303
00304 sendMessage( out.str(), network );
00305 }
00306
00307 void OvlVis::visShowNodeLabel (
00308 NETWORK_ID network,
00309 NodeID& node,
00310 string label
00311 ){
00312
00313 ostringstream out;
00314
00315 out << "VisMsgShowNodeLabel" << ";"
00316 << Helper::ultos(network) << ";"
00317 << node.toString() << ";"
00318 << label << std::endl;
00319
00320 sendMessage( out.str(), network );
00321 }
00322
00323 void OvlVis::visDeleteNodeLabel (
00324 NETWORK_ID network,
00325 NodeID& node
00326 ){
00327
00328 ostringstream out;
00329
00330 out << "VisMsgDeleteNodeLable" << ";"
00331 << Helper::ultos(network) << ";"
00332 << node.toString() << std::endl;
00333
00334 sendMessage( out.str(), network );
00335 }
00336
00337 void OvlVis::visShowNodeBubble (
00338 NETWORK_ID network,
00339 NodeID& node,
00340 string label
00341 ){
00342
00343 unsigned long bubbleKey = nodeBubbles.insert( network, node );
00344 ostringstream out;
00345
00346 out << "VisMsgShowNodeBubble" << ";"
00347 << Helper::ultos(network) << ";"
00348 << Helper::ultos(bubbleKey) << ";"
00349 << node.toString() << ";"
00350 << label << std::endl;
00351
00352 sendMessage( out.str(), network );
00353 }
00354
00355
00356 void OvlVis::visDeleteNodeBubble (
00357 NETWORK_ID network,
00358 NodeID& node
00359 ){
00360
00361 if( !nodeBubbles.exists(network, node)) return;
00362
00363 unsigned long bubbleID = nodeBubbles.get( network, node );
00364 nodeBubbles.remove( network, node );
00365
00366 ostringstream out;
00367
00368 out << "VisMsgDeleteBubble" << ";"
00369 << Helper::ultos(network) << ";"
00370 << Helper::ultos(bubbleID) << std::endl;
00371
00372 sendMessage( out.str(), network );
00373 }
00374
00375 void OvlVis::visShowShiftedNodeIcon (
00376 NETWORK_ID network,
00377 NodeID& node,
00378 ICON_ID iconID,
00379 unsigned int timeout
00380 ){
00381
00382 unsigned long iconKey = shiftedNodeIcons.insert( network, node );
00383
00384 ostringstream out;
00385
00386 out << "VisMsgShowNodeIcon" << ";"
00387 << Helper::ultos(network) << ";"
00388 << Helper::ultos(iconKey) << ";"
00389 << node.toString() << ";"
00390 << Helper::ultos(iconID) << std::endl;
00391
00392 sendMessage( out.str(), network );
00393
00394 if( timeout > 0 ){
00395 TimedoutIcon* obj = new TimedoutIcon( network, node, timeout );
00396 obj->startIcon();
00397 }
00398 }
00399
00400 void OvlVis::visDeleteShiftedNodeIcon (
00401 NETWORK_ID network,
00402 NodeID& node
00403 ){
00404
00405 if( !shiftedNodeIcons.exists(network, node) )return;
00406
00407 unsigned long iconKey = shiftedNodeIcons.get( network, node );
00408 shiftedNodeIcons.remove( network, node );
00409
00410 ostringstream out;
00411
00412 out << "VisMsgDeleteIcon" << ";"
00413 << Helper::ultos(network) << ";"
00414 << Helper::ultos(iconKey) << std::endl;
00415
00416 sendMessage( out.str(), network );
00417 }
00418
00419
00420
00421
00422
00423 void OvlVis::visChangeLinkWidth (
00424 NETWORK_ID network,
00425 NodeID& srcnode,
00426 NodeID& destnode,
00427 unsigned int width
00428 ){
00429
00430 unsigned long edgekey = networkLinks.get( network, NodePair(srcnode, destnode) );
00431
00432 ostringstream out;
00433 out << "VisMsgChangeLinkWidth" << ";"
00434 << Helper::ultos(network) << ";"
00435 << Helper::ultos(edgekey) << ";"
00436 << Helper::ultos(width) << std::endl;
00437
00438 sendMessage( out.str(), network );
00439 }
00440
00441 void OvlVis::visChangeLinkColor (
00442 NETWORK_ID network,
00443 NodeID& srcnode,
00444 NodeID& destnode,
00445 unsigned char r,
00446 unsigned char g,
00447 unsigned char b
00448 ){
00449
00450 ostringstream out;
00451 unsigned long edgekey = networkLinks.get( network, NodePair(srcnode, destnode) );
00452
00453 out << "VisMsgChangeLinkColor" << ";"
00454 << Helper::ultos(network) << ";"
00455 << Helper::ultos(edgekey) << ";"
00456 << Helper::ultos(r) << ";"
00457 << Helper::ultos(g) << ";"
00458 << Helper::ultos(b) << std::endl;
00459
00460 sendMessage( out.str(), network );
00461 }
00462
00463 void OvlVis::visChangeLinkColor (
00464 NETWORK_ID network,
00465 NodeID& srcnode,
00466 NodeID& destnode,
00467 NODE_COLORS color
00468 ){
00469
00470 unsigned char r = 0;
00471 unsigned char g = 0;
00472 unsigned char b = 0;
00473
00474 switch( color ) {
00475 case NODE_COLORS_GREY: r = 128; g = 128; b = 128; break;
00476 case NODE_COLORS_GREEN: r = 0; g = 200; b = 0; break;
00477 case NODE_COLORS_RED: r = 255; g = 0; b = 0; break;
00478 }
00479
00480 visChangeLinkColor( network, srcnode, destnode, r, g, b );
00481 }
00482
00483 void OvlVis::visShowLinkLabel (
00484 NETWORK_ID network,
00485 NodeID& srcnode,
00486 NodeID& destnode,
00487 string label
00488 ){
00489
00490 ostringstream out;
00491 unsigned long edgekey = networkLinks.get( network, NodePair(srcnode, destnode) );
00492
00493 out << "VisMsgShowLinkLabel" << ";"
00494 << Helper::ultos(network) << ";"
00495 << Helper::ultos(edgekey) << ";"
00496 << label << std::endl;
00497
00498 sendMessage( out.str(), network );
00499 }
00500
00501 void OvlVis::visDeleteLinkLabel (
00502 NETWORK_ID network,
00503 NodeID& srcnode,
00504 NodeID& destnode
00505 ){
00506
00507 if( !networkLinks.exists(network, NodePair(srcnode, destnode))) return;
00508
00509 unsigned long edgekey = networkLinks.get( network, NodePair(srcnode, destnode) );
00510 ostringstream out;
00511
00512 out << "VisMsgDeleteLinkLabel" << ";"
00513 << Helper::ultos(network) << ";"
00514 << Helper::ultos(edgekey) << std::endl;
00515
00516 sendMessage( out.str(), network );
00517 }
00518
00519 void OvlVis::visShowOnLinkIcon (
00520 NETWORK_ID network,
00521 NodeID& srcnode,
00522 NodeID& destnode,
00523 ICON_ID iconID
00524 ){
00525
00526 unsigned long iconKey = onLinkIcons.insert(network, NodePair(srcnode, destnode));
00527 ostringstream out;
00528
00529 out << "VisMsgShowLinkIcon" << ";"
00530 << Helper::ultos(network) << ";"
00531 << Helper::ultos(iconKey) << ";"
00532 << srcnode.toString() << ";"
00533 << destnode.toString() << ";"
00534 << Helper::ultos(iconID) << std::endl;
00535
00536 sendMessage( out.str(), network );
00537 }
00538
00539 void OvlVis::visDeleteOnLinkIcon (
00540 NETWORK_ID network,
00541 NodeID& srcnode,
00542 NodeID& destnode
00543 ){
00544
00545 if( !onLinkIcons.exists(network, NodePair(srcnode, destnode))) return;
00546
00547 unsigned long iconKey = onLinkIcons.get( network, NodePair(srcnode, destnode) );
00548 onLinkIcons.remove( network, NodePair(srcnode, destnode) );
00549
00550 ostringstream out;
00551
00552 out << "VisMsgDeleteIcon" << ";"
00553 << Helper::ultos(network) << ";"
00554 << Helper::ultos(iconKey) << std::endl;
00555
00556 sendMessage( out.str(), network );
00557 }
00558
00559 void OvlVis::visShowLinkBubble (
00560 NETWORK_ID network,
00561 NodeID& srcnode,
00562 NodeID& destnode,
00563 string label
00564 ){
00565
00566 ostringstream out;
00567 unsigned long bubble = linkBubbles.insert( network, NodePair(srcnode, destnode) );
00568
00569 out << "VisMsgShowLinkBubble" << ";"
00570 << Helper::ultos(network) << ";"
00571 << Helper::ultos(bubble) << ";"
00572 << srcnode.toString() << ";"
00573 << destnode.toString() << ";"
00574 << label << std::endl;
00575
00576 sendMessage( out.str(), network );
00577 }
00578
00579 void OvlVis::visDeleteLinkBubble (
00580 NETWORK_ID network,
00581 NodeID& srcnode,
00582 NodeID& destnode
00583 ){
00584
00585 if( !linkBubbles.exists(network, NodePair(srcnode, destnode))) return;
00586
00587 ostringstream out;
00588 unsigned long bubble = linkBubbles.get( network, NodePair(srcnode, destnode) );
00589 linkBubbles.remove( network, NodePair(srcnode, destnode) );
00590
00591 out << "VisMsgDeleteBubble" << ";"
00592 << Helper::ultos(network) << ";"
00593 << Helper::ultos(bubble) << std::endl;
00594
00595 sendMessage( out.str(), network );
00596 }
00597
00598
00599
00600
00601
00602 void OvlVis::visSendMessage (
00603 NETWORK_ID network,
00604 NodeID& startnode,
00605 NodeID& endnode
00606 ){
00607
00608 ostringstream out;
00609
00610 out << "VisMsgSendMessage" << ";"
00611 << Helper::ultos(network) << ";"
00612 << startnode.toString() << ";"
00613 << endnode.toString() << std::endl;
00614
00615 sendMessage( out.str(), network );
00616 }
00617
00618
00619
00620
00621
00622 void OvlVis::visCLIOInitMeasurement(
00623 NETWORK_ID network,
00624 unsigned long edgekey,
00625 NodeID& srcnode,
00626 NodeID& destnode,
00627 string info
00628 ){
00629
00630 ostringstream out;
00631
00632 out << "VisMsgCLIOInitMeasurement" << ";"
00633 << Helper::ultos(network) << ";"
00634 << Helper::ultos(edgekey) << ";"
00635 << srcnode.toString() << ";"
00636 << destnode.toString() << ";"
00637 << info << std::endl;
00638
00639 sendMessage( out.str(), network );
00640 }
00641
00642 void OvlVis::visCLIOEndMeasurement(
00643 NETWORK_ID network,
00644 unsigned long edgekey,
00645 NodeID& srcnode,
00646 NodeID& destnode,
00647 string info,
00648 string value,
00649 string unit
00650 ){
00651
00652 ostringstream out;
00653
00654 out << "VisMsgCLIOEndMeasurement" << ";"
00655 << Helper::ultos(network) << ";"
00656 << Helper::ultos(edgekey) << ";"
00657 << srcnode.toString() << ";"
00658 << destnode.toString() << ";"
00659 << info << ";"
00660 << value << ";"
00661 << unit << std::endl;
00662
00663 sendMessage( out.str(), network );
00664 }
00665
00666
00667
00668
00669
00670 }}