source: source/ariba/utility/misc/OvlVis.cpp@ 5945

Last change on this file since 5945 was 5316, checked in by Christoph Mayer, 15 years ago

merge from bootstrap branch

File size: 17.1 KB
Line 
1// [License]
2// The Ariba-Underlay Copyright
3//
4// Copyright (c) 2008-2009, Institute of Telematics, UniversitÀt Karlsruhe (TH)
5//
6// Institute of Telematics
7// UniversitÀt Karlsruhe (TH)
8// Zirkel 2, 76128 Karlsruhe
9// Germany
10//
11// Redistribution and use in source and binary forms, with or without
12// modification, are permitted provided that the following conditions are
13// met:
14//
15// 1. Redistributions of source code must retain the above copyright
16// notice, this list of conditions and the following disclaimer.
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// THIS SOFTWARE IS PROVIDED BY THE INSTITUTE OF TELEMATICS ``AS IS'' AND
22// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ARIBA PROJECT OR
25// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32//
33// The views and conclusions contained in the software and documentation
34// are those of the authors and should not be interpreted as representing
35// official policies, either expressed or implied, of the Institute of
36// Telematics.
37// [License]
38
39#include "OvlVis.h"
40
41namespace ariba {
42namespace utility {
43
44//*****************************************************
45//*****************************************************
46//*****************************************************
47
48use_logging_cpp(OvlVis);
49
50OvlVis::OvlVis() : socket(io_service), socketOpened(false) {
51
52 if( ! Configuration::haveConfig() ) return;
53 if( ! Configuration::instance().exists("DEMO_OvlVisIP") ) return;
54 if( ! Configuration::instance().exists("DEMO_OvlVisPort") ) return;
55
56 string serverIP = Configuration::instance().read<string>("DEMO_OvlVisIP");
57 string serverPort = Configuration::instance().read<string>("DEMO_OvlVisPort");
58 if( serverIP.length() == 0 || serverPort.length() == 0) return;
59
60 logging_debug( "connecting to ovlvis " + serverIP + " on " + serverPort );
61
62 tcp::resolver resolver(io_service);
63 tcp::resolver::query query(
64 serverIP,
65 serverPort,
66 tcp::resolver::query::passive |
67 tcp::resolver::query::address_configured |
68 tcp::resolver::query::numeric_service);
69
70 tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
71 tcp::resolver::iterator end;
72
73 boost::system::error_code error = boost::asio::error::host_not_found;
74 while (error && endpoint_iterator != end){
75 socket.close();
76 socket.connect(*endpoint_iterator++, error);
77 }
78
79 if (error){
80 logging_warn( "OvlVis could not connect to GUI" );
81 } else {
82 socketOpened = true;
83 }
84}
85
86OvlVis::~OvlVis(){
87
88 socket.close();
89
90}
91
92void OvlVis::sendMessage( const string msg, NETWORK_ID nid ) {
93
94 sendSocket( msg );
95
96// {
97// // auto layout
98// ostringstream out;
99//
100// out << "VisMsgOptimizeView" << ";"
101// << Helper::ultos(nid) << ";" // network id is ignored in the message renderer, just renders the current viewed network
102// << "0" << std::endl;
103//
104// sendSocket( out.str() );
105// }
106
107// { // auto zoom
108// ostringstream out;
109//
110// out << "VisMsgOptimizeView" << ";"
111// << Helper::ultos(nid) << ";" // network id is ignored in the message renderer, just renders the current viewed network
112// << "1" << std::endl;
113//
114// sendSocket( out.str() );
115// }
116
117}
118
119void OvlVis::sendSocket(const string msg){
120 if( socket.is_open() && socketOpened )
121 socket.send( boost::asio::buffer(msg) );
122}
123
124//*****************************************************
125//*****************************************************
126//*****************************************************
127
128void OvlVis::visCreate(
129 NETWORK_ID network,
130 NodeID& node,
131 string nodename,
132 string info
133 ){
134
135 ostringstream out;
136
137 out << "VisMsgCreate" << ";"
138 << Helper::ultos(network) << ";"
139 << node.toString() << ";"
140 << nodename << ";"
141 << "" /*netName*/ << ";"
142 << "" /*ip*/ << ";"
143 << "" /*port*/ << ";"
144 << "0" << ";"
145 << info << std::endl;
146
147 sendMessage( out.str(), network );
148}
149
150void OvlVis::visChangeStatus(
151 NETWORK_ID network,
152 NodeID& node,
153 bool enable,
154 string info
155 ){
156
157 ostringstream out;
158
159 out << "VisMsgChangeStatus" << ";"
160 << Helper::ultos(network) << ";"
161 << node.toString() << ";"
162 << (enable ? "1" : "0") << ";"
163 << info << std::endl;
164
165 sendMessage( out.str(), network );
166}
167
168void OvlVis::visConnect(
169 NETWORK_ID network,
170 NodeID& srcnode,
171 NodeID& destnode,
172 string info
173 ){
174
175 // if we already have a link between the two nodes
176 // we just ignore the call and leave the old link
177
178 if( networkLinks.exists( network, NodePair(srcnode,destnode) )) return;
179
180 ostringstream out;
181 unsigned long edgekey = networkLinks.insert( network, NodePair(srcnode,destnode) );
182
183 out << "VisMsgConnect" << ";"
184 << Helper::ultos(network) << ";"
185 << edgekey << ";"
186 << srcnode.toString() << ";"
187 << destnode.toString() << ";"
188 << "0" << ";"
189 << info << std::endl;
190
191 sendMessage( out.str(), network );
192}
193
194void OvlVis::visDisconnect(
195 NETWORK_ID network,
196 NodeID& srcnode,
197 NodeID& destnode,
198 string info
199 ){
200
201 if( !networkLinks.exists(network, NodePair(srcnode, destnode)) ) return;
202
203 unsigned long edgekey = networkLinks.get( network, NodePair(srcnode, destnode) );
204 networkLinks.remove( network, NodePair(srcnode, destnode) );
205
206 ostringstream out;
207 out << "VisMsgDisconnect" << ";"
208 << Helper::ultos(network) << ";"
209 << Helper::ultos(edgekey) << ";"
210 << info << std::endl;
211
212 sendMessage( out.str(), network );
213}
214
215void OvlVis::visFailedConnect(
216 NETWORK_ID network,
217 NodeID& srcnode,
218 NodeID& destnode,
219 string info
220 ){
221
222 ostringstream out;
223
224 out << "VisMsgFailedConnect" << ";"
225 << Helper::ultos(network) << ";"
226 << srcnode.toString() << ";"
227 << destnode.toString() << ";"
228 << info << std::endl;
229
230 sendMessage( out.str(), network );
231}
232
233void OvlVis::visShutdown(
234 NETWORK_ID network,
235 NodeID& node,
236 string info
237 ){
238
239 ostringstream out;
240
241 out << "VisMsgShutdown" << ";"
242 << Helper::ultos(network) << ";"
243 << node.toString() << ";"
244 << info << std::endl;
245
246 sendMessage( out.str(), network );
247}
248
249//*****************************************************
250//*****************************************************
251//*****************************************************
252
253void OvlVis::visChangeNodeColor (
254 NETWORK_ID network,
255 NodeID& node,
256 unsigned char r,
257 unsigned char g,
258 unsigned char b
259 ){
260
261 ostringstream out;
262
263 out << "VisMsgChangeNodeColor" << ";"
264 << Helper::ultos(network) << ";"
265 << node.toString() << ";"
266 << ariba::utility::Helper::ultos(r) << ";"
267 << ariba::utility::Helper::ultos(g) << ";"
268 << ariba::utility::Helper::ultos(b) << std::endl;
269
270 sendMessage( out.str(), network );
271}
272
273void OvlVis::visChangeNodeColor (
274 NETWORK_ID network,
275 NodeID& node,
276 NODE_COLORS color
277 ){
278
279 unsigned char r = 0;
280 unsigned char g = 0;
281 unsigned char b = 0;
282
283 switch( color ) {
284 case NODE_COLORS_GREY: r = 128; g = 128; b = 128; break;
285 case NODE_COLORS_GREEN: r = 0; g = 200; b = 0; break;
286 case NODE_COLORS_RED: r = 255; g = 0; b = 0; break;
287 }
288
289 visChangeNodeColor( network, node, r, g, b );
290}
291
292void OvlVis::visChangeNodeIcon (
293 NETWORK_ID network,
294 NodeID& node,
295 ICON_ID icon
296 ){
297
298 ostringstream out;
299
300 out << "VisMsgChangeNodeIcon" << ";"
301 << Helper::ultos(network) << ";"
302 << node.toString() << ";"
303 << Helper::ultos((unsigned int)icon) << std::endl;
304
305 sendMessage( out.str(), network );
306}
307
308void OvlVis::visShowNodeLabel (
309 NETWORK_ID network,
310 NodeID& node,
311 string label
312 ){
313
314 ostringstream out;
315
316 out << "VisMsgShowNodeLabel" << ";"
317 << Helper::ultos(network) << ";"
318 << node.toString() << ";"
319 << label << std::endl;
320
321 sendMessage( out.str(), network );
322}
323
324void OvlVis::visDeleteNodeLabel (
325 NETWORK_ID network,
326 NodeID& node
327 ){
328
329 ostringstream out;
330
331 out << "VisMsgDeleteNodeLable" << ";"
332 << Helper::ultos(network) << ";"
333 << node.toString() << std::endl;
334
335 sendMessage( out.str(), network );
336}
337
338void OvlVis::visShowNodeBubble (
339 NETWORK_ID network,
340 NodeID& node,
341 string label
342 ){
343
344 unsigned long bubbleKey = nodeBubbles.insert( network, node );
345 ostringstream out;
346
347 out << "VisMsgShowNodeBubble" << ";"
348 << Helper::ultos(network) << ";"
349 << Helper::ultos(bubbleKey) << ";"
350 << node.toString() << ";"
351 << label << std::endl;
352
353 sendMessage( out.str(), network );
354}
355
356
357void OvlVis::visDeleteNodeBubble (
358 NETWORK_ID network,
359 NodeID& node
360 ){
361
362 if( !nodeBubbles.exists(network, node)) return;
363
364 unsigned long bubbleID = nodeBubbles.get( network, node );
365 nodeBubbles.remove( network, node );
366
367 ostringstream out;
368
369 out << "VisMsgDeleteBubble" << ";"
370 << Helper::ultos(network) << ";"
371 << Helper::ultos(bubbleID) << std::endl;
372
373 sendMessage( out.str(), network );
374}
375
376void OvlVis::visShowShiftedNodeIcon (
377 NETWORK_ID network,
378 NodeID& node,
379 ICON_ID iconID,
380 unsigned int timeout
381 ){
382
383 unsigned long iconKey = shiftedNodeIcons.insert( network, node );
384
385 ostringstream out;
386
387 out << "VisMsgShowNodeIcon" << ";"
388 << Helper::ultos(network) << ";"
389 << Helper::ultos(iconKey) << ";"
390 << node.toString() << ";"
391 << Helper::ultos(iconID) << std::endl;
392
393 sendMessage( out.str(), network );
394
395 if( timeout > 0 ){
396 TimedoutIcon* obj = new TimedoutIcon( network, node, timeout );
397 obj->startIcon();
398 }
399}
400
401void OvlVis::visDeleteShiftedNodeIcon (
402 NETWORK_ID network,
403 NodeID& node
404 ){
405
406 if( !shiftedNodeIcons.exists(network, node) )return;
407
408 unsigned long iconKey = shiftedNodeIcons.get( network, node );
409 shiftedNodeIcons.remove( network, node );
410
411 ostringstream out;
412
413 out << "VisMsgDeleteIcon" << ";"
414 << Helper::ultos(network) << ";"
415 << Helper::ultos(iconKey) << std::endl;
416
417 sendMessage( out.str(), network );
418}
419
420//*****************************************************
421//*****************************************************
422//*****************************************************
423
424void OvlVis::visChangeLinkWidth (
425 NETWORK_ID network,
426 NodeID& srcnode,
427 NodeID& destnode,
428 unsigned int width
429 ){
430
431 unsigned long edgekey = networkLinks.get( network, NodePair(srcnode, destnode) );
432
433 ostringstream out;
434 out << "VisMsgChangeLinkWidth" << ";"
435 << Helper::ultos(network) << ";"
436 << Helper::ultos(edgekey) << ";"
437 << Helper::ultos(width) << std::endl;
438
439 sendMessage( out.str(), network );
440}
441
442void OvlVis::visChangeLinkColor (
443 NETWORK_ID network,
444 NodeID& srcnode,
445 NodeID& destnode,
446 unsigned char r,
447 unsigned char g,
448 unsigned char b
449 ){
450
451 ostringstream out;
452 unsigned long edgekey = networkLinks.get( network, NodePair(srcnode, destnode) );
453
454 out << "VisMsgChangeLinkColor" << ";"
455 << Helper::ultos(network) << ";"
456 << Helper::ultos(edgekey) << ";"
457 << Helper::ultos(r) << ";"
458 << Helper::ultos(g) << ";"
459 << Helper::ultos(b) << std::endl;
460
461 sendMessage( out.str(), network );
462}
463
464void OvlVis::visChangeLinkColor (
465 NETWORK_ID network,
466 NodeID& srcnode,
467 NodeID& destnode,
468 NODE_COLORS color
469 ){
470
471 unsigned char r = 0;
472 unsigned char g = 0;
473 unsigned char b = 0;
474
475 switch( color ) {
476 case NODE_COLORS_GREY: r = 128; g = 128; b = 128; break;
477 case NODE_COLORS_GREEN: r = 0; g = 200; b = 0; break;
478 case NODE_COLORS_RED: r = 255; g = 0; b = 0; break;
479 }
480
481 visChangeLinkColor( network, srcnode, destnode, r, g, b );
482}
483
484void OvlVis::visShowLinkLabel (
485 NETWORK_ID network,
486 NodeID& srcnode,
487 NodeID& destnode,
488 string label
489 ){
490
491 ostringstream out;
492 unsigned long edgekey = networkLinks.get( network, NodePair(srcnode, destnode) );
493
494 out << "VisMsgShowLinkLabel" << ";"
495 << Helper::ultos(network) << ";"
496 << Helper::ultos(edgekey) << ";"
497 << label << std::endl;
498
499 sendMessage( out.str(), network );
500}
501
502void OvlVis::visDeleteLinkLabel (
503 NETWORK_ID network,
504 NodeID& srcnode,
505 NodeID& destnode
506 ){
507
508 if( !networkLinks.exists(network, NodePair(srcnode, destnode))) return;
509
510 unsigned long edgekey = networkLinks.get( network, NodePair(srcnode, destnode) );
511 ostringstream out;
512
513 out << "VisMsgDeleteLinkLabel" << ";"
514 << Helper::ultos(network) << ";"
515 << Helper::ultos(edgekey) << std::endl;
516
517 sendMessage( out.str(), network );
518}
519
520void OvlVis::visShowOnLinkIcon (
521 NETWORK_ID network,
522 NodeID& srcnode,
523 NodeID& destnode,
524 ICON_ID iconID
525 ){
526
527 unsigned long iconKey = onLinkIcons.insert(network, NodePair(srcnode, destnode));
528 ostringstream out;
529
530 out << "VisMsgShowLinkIcon" << ";"
531 << Helper::ultos(network) << ";"
532 << Helper::ultos(iconKey) << ";"
533 << srcnode.toString() << ";"
534 << destnode.toString() << ";"
535 << Helper::ultos(iconID) << std::endl;
536
537 sendMessage( out.str(), network );
538}
539
540void OvlVis::visDeleteOnLinkIcon (
541 NETWORK_ID network,
542 NodeID& srcnode,
543 NodeID& destnode
544 ){
545
546 if( !onLinkIcons.exists(network, NodePair(srcnode, destnode))) return;
547
548 unsigned long iconKey = onLinkIcons.get( network, NodePair(srcnode, destnode) );
549 onLinkIcons.remove( network, NodePair(srcnode, destnode) );
550
551 ostringstream out;
552
553 out << "VisMsgDeleteIcon" << ";"
554 << Helper::ultos(network) << ";"
555 << Helper::ultos(iconKey) << std::endl;
556
557 sendMessage( out.str(), network );
558}
559
560void OvlVis::visShowLinkBubble (
561 NETWORK_ID network,
562 NodeID& srcnode,
563 NodeID& destnode,
564 string label
565 ){
566
567 ostringstream out;
568 unsigned long bubble = linkBubbles.insert( network, NodePair(srcnode, destnode) );
569
570 out << "VisMsgShowLinkBubble" << ";"
571 << Helper::ultos(network) << ";"
572 << Helper::ultos(bubble) << ";"
573 << srcnode.toString() << ";"
574 << destnode.toString() << ";"
575 << label << std::endl;
576
577 sendMessage( out.str(), network );
578}
579
580void OvlVis::visDeleteLinkBubble (
581 NETWORK_ID network,
582 NodeID& srcnode,
583 NodeID& destnode
584 ){
585
586 if( !linkBubbles.exists(network, NodePair(srcnode, destnode))) return;
587
588 ostringstream out;
589 unsigned long bubble = linkBubbles.get( network, NodePair(srcnode, destnode) );
590 linkBubbles.remove( network, NodePair(srcnode, destnode) );
591
592 out << "VisMsgDeleteBubble" << ";"
593 << Helper::ultos(network) << ";"
594 << Helper::ultos(bubble) << std::endl;
595
596 sendMessage( out.str(), network );
597}
598
599//*****************************************************
600//*****************************************************
601//*****************************************************
602
603void OvlVis::visSendMessage (
604 NETWORK_ID network,
605 NodeID& startnode,
606 NodeID& endnode
607 ){
608
609 ostringstream out;
610
611 out << "VisMsgSendMessage" << ";"
612 << Helper::ultos(network) << ";"
613 << startnode.toString() << ";"
614 << endnode.toString() << std::endl;
615
616 sendMessage( out.str(), network );
617}
618
619//*****************************************************
620//*****************************************************
621//*****************************************************
622
623void OvlVis::visCLIOInitMeasurement(
624 NETWORK_ID network,
625 unsigned long edgekey,
626 NodeID& srcnode,
627 NodeID& destnode,
628 string info
629 ){
630
631 ostringstream out;
632
633 out << "VisMsgCLIOInitMeasurement" << ";"
634 << Helper::ultos(network) << ";"
635 << Helper::ultos(edgekey) << ";"
636 << srcnode.toString() << ";"
637 << destnode.toString() << ";"
638 << info << std::endl;
639
640 sendMessage( out.str(), network );
641}
642
643void OvlVis::visCLIOEndMeasurement(
644 NETWORK_ID network,
645 unsigned long edgekey,
646 NodeID& srcnode,
647 NodeID& destnode,
648 string info,
649 string value,
650 string unit
651 ){
652
653 ostringstream out;
654
655 out << "VisMsgCLIOEndMeasurement" << ";"
656 << Helper::ultos(network) << ";"
657 << Helper::ultos(edgekey) << ";"
658 << srcnode.toString() << ";"
659 << destnode.toString() << ";"
660 << info << ";"
661 << value << ";"
662 << unit << std::endl;
663
664 sendMessage( out.str(), network );
665}
666
667//*****************************************************
668//*****************************************************
669//*****************************************************
670
671}} // namespace ariba, common
Note: See TracBrowser for help on using the repository browser.