source: source/ariba/utility/bootstrap/modules/periodicbroadcast/PeriodicBroadcast.cpp@ 4851

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

-mehr stuff für periodic broadcast

File size: 4.2 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 co// [License]
17// The Ariba-Underlay Copyright
18//
19// Copyright (c) 2008-2009, Institute of Telematics, UniversitÀt Karlsruhe (TH)
20//
21// Institute of Telematics
22// UniversitÀt Karlsruhe (TH)
23// Zirkel 2, 76128 Karlsruhe
24// Germany
25//
26// Redistribution and use in source and binary forms, with or without
27// modification, are permitted provided that the following conditions are
28// met:
29//
30// 1. Redistributions of source code must retain the above copyright
31// notice, this list of conditions and the following disclaimer.
32// 2. Redistributions in binary form must reproduce the above copyright
33// notice, this list of conditions and the following disclaimer in the
34// documentation and/or other materials provided with the distribution.
35//
36// THIS SOFTWARE IS PROVIDED BY THE INSTITUTE OF TELEMATICS ``AS IS'' AND
37// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ARIBA PROJECT OR
40// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
41// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
42// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
43// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
44// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
45// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
46// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47//
48// The views and conclusions contained in the software and documentation
49// are those of the authors and should not be interpreted as representing
50// official policies, either expressed or implied, of the Institute of
51// Telematics.
52// [License]
53
54#include "PeriodicBroadcast.h"
55#include "PeriodicBroadcastMessage.h"
56
57namespace ariba {
58namespace utility {
59
60use_logging_cpp(PeriodicBroadcast);
61const long PeriodicBroadcast::timerinterval = 1000;
62
63PeriodicBroadcast::PeriodicBroadcast(BootstrapInformationCallback* _callback) : BootstrapModule(_callback) {
64}
65
66PeriodicBroadcast::~PeriodicBroadcast(){
67}
68
69string PeriodicBroadcast::getName(){
70 return "PeriodicBroadcast";
71}
72
73string PeriodicBroadcast::getInformation(){
74 return "periodic broadcasting of service information";
75}
76
77bool PeriodicBroadcast::isFunctional(){
78 return true;
79}
80
81void PeriodicBroadcast::start(){
82 Timer::setInterval( timerinterval );
83 Timer::start();
84}
85
86void PeriodicBroadcast::stop(){
87 Timer::stop();
88
89 boost::mutex::scoped_lock lock( localServicesMutex );
90 localServices.clear();
91}
92
93void PeriodicBroadcast::publishService(string name, string info1, string info2, string info3){
94 Service service;
95
96 service.name = name;
97 service.info1 = info1;
98 service.info2 = info2;
99 service.info3 = info3;
100
101 boost::mutex::scoped_lock lock( localServicesMutex );
102 localServices.insert( std::make_pair(name, service) );
103}
104
105void PeriodicBroadcast::revokeService(string name){
106 boost::mutex::scoped_lock lock( localServicesMutex );
107
108 ServiceList::iterator i = localServices.find( name );
109 if( i != localServices.end() ) localServices.erase( name );
110}
111
112void PeriodicBroadcast::eventFunction(){
113 sendLocalServices();
114 updateRemoteServices();
115}
116
117void PeriodicBroadcast::sendLocalServices(){
118 boost::mutex::scoped_lock lock( localServicesMutex );
119
120 ServiceList::iterator i = localServices.begin();
121 ServiceList::iterator iend = localServices.end();
122
123 for( ; i != iend; i++){
124
125 PeriodicBroadcastMessage msg( i->second.name, i->second.info1, i->second.info2, i->second.info3 );
126 Data data = data_serialize( msg, DEFAULT_V );
127 uint8_t* pnt = data.getBuffer();
128 size_t len = data.getLength();
129
130
131 // TODO: ÃŒber socket rauspusten
132
133 }
134}
135
136void PeriodicBroadcast::updateRemoteServices(){
137
138}
139
140}} //namespace ariba, utility
Note: See TracBrowser for help on using the repository browser.