Changeset 6919
- Timestamp:
- Nov 13, 2009, 1:41:34 PM (15 years ago)
- Location:
- source/ariba
- Files:
-
- 39 edited
Legend:
- Unmodified
- Added
- Removed
-
source/ariba/AribaModule.cpp
r5767 r6919 60 60 61 61 AribaModule::AribaModule() 62 : base_comm(NULL), sideport_sniffer(NULL), started(false) {62 : started(false), base_comm(NULL), sideport_sniffer(NULL) { 63 63 64 64 endpoints = "tcp{41322};rfcomm{10};"; -
source/ariba/DataMessage.h
r2473 r6919 73 73 74 74 inline bool isData() const { 75 return size == ~ 0;75 return size == ~(size_t)0; 76 76 } 77 77 -
source/ariba/Makefile.am
r6822 r6919 22 22 # compiler flags ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 23 23 24 AM_CPPFLAGS 24 AM_CPPFLAGS = -DLINUX -D_LINUX -I../ -D_REENTRANT -DSCTP_KERN 25 25 AM_CPPFLAGS += $(BOOST_CPPFLAGS) 26 26 -
source/ariba/Name.cpp
r2481 r6919 108 108 Name& Name::operator=( const Name& name ) { 109 109 init((const char*)name.bytes(), name.length(), true, name._hreadable); 110 return *this; 110 111 } 111 112 … … 153 154 if (_hreadable) { 154 155 char str[256]; 155 for ( int i=0; i<length(); i++) str[i] = bytes()[i];156 for (size_t i=0; i<length(); i++) str[i] = bytes()[i]; 156 157 str[length()] = 0; 157 158 return string(str); -
source/ariba/Name.h
r2454 r6919 149 149 150 150 private: 151 uint8_t* _bytes; 152 int _length; 153 bool _copy; 151 154 bool _hreadable; 152 bool _copy;153 int _length;154 uint8_t* _bytes;155 155 156 156 void init(const char* name, int len, bool copy, bool hreadable); -
source/ariba/Node.cpp
r6836 r6919 48 48 49 49 Node::Node(AribaModule& ariba_mod, const Name& node_name) : 50 ariba_mod(ariba_mod), name(node_name) {50 name(node_name), ariba_mod(ariba_mod) { 51 51 base_overlay = new BaseOverlay(); 52 52 } … … 164 164 // now that we have a listener, we can ask if sniffing is ok 165 165 if( ariba_mod.sideport_sniffer != NULL ){ 166 bool allow = listener->onEnableSideportListener();166 // bool allow = listener->onEnableSideportListener(); 167 167 base_overlay->registerSidePort(ariba_mod.sideport_sniffer); 168 168 } … … 202 202 // @see Module.h 203 203 string Node::getName() const { 204 204 return name.toString(); 205 205 } 206 206 -
source/ariba/communication/BaseCommunication.cpp
r6828 r6919 539 539 /// query a descriptor by local link id 540 540 BaseCommunication::LinkDescriptor& BaseCommunication::queryLocalLink( const LinkID& link ) const { 541 for ( int i=0; i<linkSet.size();i++)541 for (size_t i=0; i<linkSet.size();i++) 542 542 if (linkSet[i]->localLink == link) return (LinkDescriptor&)*linkSet[i]; 543 543 … … 547 547 /// query a descriptor by remote link id 548 548 BaseCommunication::LinkDescriptor& BaseCommunication::queryRemoteLink( const LinkID& link ) const { 549 for ( int i=0; i<linkSet.size();i++)549 for (size_t i=0; i<linkSet.size();i++) 550 550 if (linkSet[i]->remoteLink == link) return (LinkDescriptor&)*linkSet[i]; 551 551 … … 555 555 LinkIDs BaseCommunication::getLocalLinks( const address_v* addr ) const { 556 556 LinkIDs ids; 557 for ( int i=0; i<linkSet.size(); i++){557 for (size_t i=0; i<linkSet.size(); i++){ 558 558 if( addr == NULL ){ 559 559 ids.push_back( linkSet[i]->localLink ); -
source/ariba/communication/BaseCommunication.h
r5874 r6919 41 41 42 42 // boost & std includes 43 #include < ext/hash_map>44 #include < ext/hash_set>43 #include <boost/unordered_map.hpp> 44 #include <boost/unordered_set.hpp> 45 45 #include <map> 46 46 #include <set> … … 239 239 /// link identifiers 240 240 LinkID localLink; 241 const address_v* localLocator; 242 243 /// used underlay addresses for the link 241 244 LinkID remoteLink; 242 243 /// used underlay addresses for the link244 const address_v* localLocator;245 245 const address_v* remoteLocator; 246 246 -
source/ariba/communication/EndpointDescriptor.h
r5624 r6919 107 107 EndpointDescriptor& operator=( const EndpointDescriptor& rhs) { 108 108 endpoints = rhs.endpoints; 109 return *this; 109 110 } 110 111 -
source/ariba/communication/messages/AribaBaseMsg.cpp
r5284 r6919 66 66 return "typeLinkUpdate"; 67 67 default: 68 "unknown";68 return "unknown"; 69 69 } 70 70 return "unknown"; -
source/ariba/communication/networkinfo/AddressDiscovery.cpp
r5789 r6919 95 95 void AddressDiscovery::discover_ip_addresses( endpoint_set& endpoints ) { 96 96 struct ifaddrs* ifaceBuffer = NULL; 97 struct ifaddrs* tmpAddr = NULL;98 97 void* tmpAddrPtr = NULL; 99 98 -
source/ariba/communication/networkinfo/NetworkChangeDetection.cpp
r3690 r6919 190 190 191 191 for( ; bytesRead > 0; header = NLMSG_NEXT(header, bytesRead)) { 192 if ( !NLMSG_OK(header,bytesRead) ||192 if (!NLMSG_OK(header, (int)bytesRead) || 193 193 (size_t) bytesRead < sizeof(struct nlmsghdr) || 194 (size_t) bytesRead < header->nlmsg_len) {194 (size_t) bytesRead < (size_t)header->nlmsg_len) { 195 195 continue; 196 196 } -
source/ariba/communication/networkinfo/NetworkChangeDetection.h
r3690 r6919 93 93 void stopMonitoring(); 94 94 95 volatile bool running; 95 96 boost::thread* monitoringThread; 96 volatile bool running;97 97 static void monitoringThreadFunc( NetworkChangeDetection* obj ); 98 98 -
source/ariba/communication/networkinfo/NetworkInterface.cpp
r3690 r6919 47 47 name( "" ), index( -1 ), isRunning( false ), 48 48 isUp( false ), isLoopback(false ), isBroadcast( false ), 49 mtu( -1 ), isMulticast( false), txQueueLen( -1 )49 isMulticast( false ), mtu( -1 ), txQueueLen( -1 ) 50 50 { 51 51 } -
source/ariba/overlay/BaseOverlay.cpp
r6916 r6919 148 148 static bool equals( const Data& lhs, const Data& rhs ) { 149 149 if (rhs.getLength()!=lhs.getLength()) return false; 150 for ( int i=0; i<lhs.getLength()/8; i++)150 for (size_t i=0; i<lhs.getLength()/8; i++) 151 151 if (lhs.getBuffer()[i] != rhs.getBuffer()[i]) return false; 152 152 return true; … … 604 604 message->setDestinationNode(remote); 605 605 message->setService(service); 606 send( message, remote );606 return send( message, remote ); 607 607 } 608 608 … … 747 747 748 748 BaseOverlay::BaseOverlay() : 749 bc(NULL), overlayInterface(NULL), nodeId(NodeID::UNSPECIFIED), 750 spovnetId(SpoVNetID::UNSPECIFIED), state(BaseOverlayStateInvalid), 751 sideport(&SideportListener::DEFAULT), started(false), counter(0) { 749 started(false),state(BaseOverlayStateInvalid), 750 bc(NULL), 751 nodeId(NodeID::UNSPECIFIED), spovnetId(SpoVNetID::UNSPECIFIED), 752 sideport(&SideportListener::DEFAULT), overlayInterface(NULL), 753 counter(0) { 752 754 dht = new DHT(); 753 755 localDHT = new DHT(); … … 1158 1160 sideport = _sideport; 1159 1161 _sideport->configure( this ); 1162 return true; 1160 1163 } 1161 1164 1162 1165 bool BaseOverlay::unregisterSidePort(SideportListener* _sideport) { 1163 1166 sideport = &SideportListener::DEFAULT; 1167 return true; 1164 1168 } 1165 1169 … … 1789 1793 // erase the original descriptor 1790 1794 eraseDescriptor(ld->overlayId); 1795 return true; 1791 1796 } 1792 1797 … … 2182 2187 void BaseOverlay::dhtPut( const Data& key, const Data& value, int ttl, bool replace, bool no_local_refresh ) { 2183 2188 2184 logging_info("DHT: putting key=" << key 2185 << " value=" << value 2186 << " ttl=" << ttl 2187 << " replace=" << replace 2189 logging_info("DHT: putting key=" << key << " value=" << value 2190 << " ttl=" << ttl << " replace=" << replace 2188 2191 ); 2189 2192 -
source/ariba/overlay/OverlayBootstrap.h
r5967 r6919 106 106 nodeid = rhs.nodeid; 107 107 endpoint = rhs.endpoint; 108 return *this; 108 109 } 109 110 -
source/ariba/overlay/messages/DHTMessage.cpp
r6835 r6919 10 10 DHTMessage::DHTMessage() { 11 11 this->key.setLength(0); 12 this->ttl = 0;12 this->ttl = 0; 13 13 this->replace = false; 14 14 } … … 18 18 this->hash = NodeID::sha1( key.getBuffer(), key.getLength() / 8 ); 19 19 this->key = key.clone(); 20 this->ttl = 0;20 this->ttl = 0; 21 21 this->replace = false; 22 22 } … … 26 26 this->hash = NodeID::sha1( key.getBuffer(), key.getLength() / 8 ); 27 27 this->key = key.clone(); 28 this->values.push_back( 29 this->ttl = 0;28 this->values.push_back( value.clone() ); 29 this->ttl = 0; 30 30 this->replace = false; 31 31 } 32 32 33 33 DHTMessage::DHTMessage( const Data& key, const vector<Data>& values ) { 34 this->hash = NodeID::sha1( key.getBuffer(), key.getLength() / 8 ); 34 35 this->key = key.clone(); 35 36 BOOST_FOREACH(const Data value, values ) 36 this->values.push_back( value.clone() ); 37 this->values.push_back( value.clone() ); 38 this->ttl = 0; 37 39 this->replace = false; 38 40 } -
source/ariba/overlay/messages/DHTMessage.h
r6835 r6919 33 33 34 34 bool hasValues() const { 35 values.size() != 0;35 return values.size() != 0; 36 36 } 37 37 -
source/ariba/overlay/messages/OverlayMsg.h
r6266 r6919 213 213 uint8_t increaseNumHops() { 214 214 hops++; 215 return hops; 215 216 } 216 217 -
source/ariba/overlay/modules/OverlayInterface.h
r6854 r6919 179 179 BaseOverlay& baseoverlay; 180 180 181 /// The parameters of the overlay structure182 OverlayParameterSet parameters;183 184 181 /// The node identifier to use with this overlay 185 182 const NodeID& nodeid; … … 187 184 /// The listener used to inform about overlay structure changes 188 185 OverlayStructureEvents* eventsReceiver; 186 187 /// The parameters of the overlay structure 188 OverlayParameterSet parameters; 189 189 190 190 /// The service identifer of this overlay -
source/ariba/overlay/modules/chord/Chord.cpp
r6854 r6919 79 79 80 80 // check if we already have a connection 81 for ( int i=0; i<table->size(); i++)81 for (size_t i=0; i<table->size(); i++) 82 82 if ((*table)[i]->ref_count > 0 && (*table)[i]->id == remote && !((*table)[i]->info.isUnspecified())) 83 83 return LinkID::UNSPECIFIED; … … 291 291 292 292 // handle messages 293 switch ( m->getType()) {293 switch ((signalMessageTypes)m->getType()) { 294 294 295 295 // discovery request … … 317 317 setup( dmsg->getEndpoint(), m->getSourceNode() ); 318 318 319 // delegate discovery message319 // process discovery message -------------------------- switch start -- 320 320 switch (dmsg->getType()) { 321 321 … … 388 388 baseoverlay.send(&omsg, omsg.getDestinationNode()); 389 389 break; 390 }} 390 } 391 case Discovery::invalid: 392 break; 393 394 default: 395 break; 396 } 397 // process discovery message ---------------------------- switch end -- 398 391 399 delete dmsg; 392 400 break; … … 426 434 // updating neighbors 427 435 logging_debug("Discover new ring neighbors"); 428 for ( int i=0; i<table->size(); i++) {436 for (size_t i=0; i<table->size(); i++) { 429 437 LinkID id = (*table)[i]->info; 430 438 if (!id.isUnspecified()) discover_neighbors(id); -
source/ariba/overlay/modules/chord/detail/chord_routing_table.hpp
r5902 r6919 92 92 private: 93 93 // maximum number of fingers 94 static const int max_fingers = 32;94 static const size_t max_fingers = 32; 95 95 96 96 // the own node id -
source/ariba/overlay/modules/onehop/OneHop.cpp
r6266 r6919 241 241 if( onemsg->isType( OneHopMessage::OneHopMessageTypeListingRequest ) ){ 242 242 243 NodeListingRequest* request = onemsg->decapsulate<NodeListingRequest>();243 //NodeListingRequest* request = onemsg->decapsulate<NodeListingRequest>(); 244 244 245 245 logging_info( "onehop received node listing request from node " << remote.toString() ); -
source/ariba/utility/addressing/endpoint_set.hpp
r6877 r6919 399 399 this->rfcomm = rhs.rfcomm; 400 400 this->tcp = rhs.tcp; 401 return *this; 401 402 } 402 403 -
source/ariba/utility/addressing/ip_address.hpp
r6841 r6919 166 166 } 167 167 168 169 168 bool is_multicast_site_local() const { 170 169 if (addr.is_v4()) return false; -
source/ariba/utility/bootstrap/modules/bluetoothsdp/BluetoothSdp.cpp
r5967 r6919 64 64 namespace utility { 65 65 66 static bdaddr_t bd_addr_any = {{0, 0, 0, 0, 0, 0}}; 67 static bdaddr_t bd_addr_local = {{0, 0, 0, 0xff, 0xff, 0xff}}; 68 66 69 use_logging_cpp(BluetoothSdp); 67 70 OverlayBootstrap* BluetoothSdp::CONNECTION_CHECKER = NULL; … … 216 219 // connect to the local SDP server, register the service record 217 220 if( sdp_session_ == NULL ){ 218 sdp_session_ = sdp_connect( BDADDR_ANY, BDADDR_LOCAL, SDP_RETRY_IF_BUSY);221 sdp_session_ = sdp_connect(&bd_addr_any, &bd_addr_local, SDP_RETRY_IF_BUSY); 219 222 } 220 223 … … 275 278 276 279 bdaddr_t address; 277 uint8_t channel;280 // uint8_t channel; 278 281 279 282 dev_id = hci_get_route(NULL); … … 339 342 char name[256], info1[256], info2[256], info3[256]; 340 343 341 session = sdp_connect( BDADDR_ANY, &target, SDP_RETRY_IF_BUSY);344 session = sdp_connect(&bd_addr_any, &target, SDP_RETRY_IF_BUSY); 342 345 343 346 if (session == NULL) { … … 401 404 * Returns a string holding the bt adress in human readable form. 402 405 */ 403 char addr[32] = { 0 };404 406 char str[32] = { 0 }; 405 407 ba2str(ba, str); -
source/ariba/utility/bootstrap/modules/periodicbroadcast/PeriodicBroadcast.h
r5973 r6919 197 197 public: 198 198 udp_server(boost::asio::io_service& io_service, ServiceList* _services, boost::mutex* _servicesmutex) 199 : s ervices(_services), servicesmutex(_servicesmutex),200 socket_v4(io_service), socket_v6(io_service) {199 : socket_v4(io_service), socket_v6(io_service), 200 services(_services), servicesmutex(_servicesmutex) { 201 201 202 202 if( open4() ) start_receive_4(); … … 350 350 351 351 { // insert new found service 352 boost::mutex::scoped_lock ( *servicesmutex );352 boost::mutex::scoped_lock lock( *servicesmutex ); 353 353 354 354 ServiceList::iterator it = services->find( msg.getName() ); -
source/ariba/utility/measurement/PathloadMeasurement.cpp
r5412 r6919 45 45 46 46 PathloadMeasurement::PathloadMeasurement(BaseOverlay* _overlay) 47 : running( false ), resultNode( NodeID::UNSPECIFIED ),48 listener( NULL),serverpid( -1 ) {47 : running( false ), listener( NULL), resultNode( NodeID::UNSPECIFIED ), 48 serverpid( -1 ) { 49 49 50 50 if( _overlay != NULL ) // this is important due to the singleton interface! … … 142 142 char buf[128]; 143 143 string content = ""; 144 bool failed = true;144 // bool failed = true; 145 145 146 146 while( fgets(buf, 100, stream) != NULL ){ -
source/ariba/utility/messages/Message.h
r6786 r6919 106 106 */ 107 107 explicit inline Message( const Data& data ) : 108 srcAddr(NULL),destAddr(NULL), releasePayload(true) {108 releasePayload(true), srcAddr(NULL),destAddr(NULL) { 109 109 this->payload = data.clone(); 110 110 // this->root = shared_array<uint8_t>((uint8_t*)data.getBuffer()); … … 246 246 } else { 247 247 if (msg->payload.isUnspecified()) { 248 size_t l = ((len == ~ 0) ? X.getRemainingLength() : len);248 size_t l = ((len == ~(size_t)0) ? X.getRemainingLength() : len); 249 249 msg->payload = X.getRemainingData(l); 250 250 msg->releasePayload = false; -
source/ariba/utility/messages/MessageProvider.cpp
r3690 r6919 49 49 bool MessageProvider::sendMessageToReceivers( const Message* message ) { 50 50 bool sent = false; 51 for ( int i=0; i<receivers.size(); i++)51 for (size_t i=0; i<receivers.size(); i++) 52 52 if (receivers[i]->receiveMessage(message, LinkID::UNSPECIFIED, NodeID::UNSPECIFIED)) sent = true; 53 53 return sent; … … 59 59 60 60 void MessageProvider::removeMessageReceiver( MessageReceiver* receiver ) { 61 for ( int i=0; i<receivers.size(); i++)61 for (size_t i=0; i<receivers.size(); i++) 62 62 if (receivers[i]==receiver) { 63 63 receivers.erase( receivers.begin()+i ); -
source/ariba/utility/serialization/DataStream.hpp
r5638 r6919 516 516 517 517 /* array and vector support */ 518 template<typename T >518 template<typename T, bool staticArray = false> 519 519 class ArrayTpl : public ExplicitSerializer { 520 520 private: … … 527 527 528 528 sznMethodBegin(X) 529 if (X.isDeserializer() ) v = new T[l];529 if (X.isDeserializer() && !staticArray) v = new T[l]; 530 530 for (size_t i=0; i<l; i++) X && v[i]; 531 531 sznMethodEnd() … … 556 556 finline ArrayTpl<T> A( T*& array, size_t length ) { 557 557 return ArrayTpl<T>(array,length); 558 } 559 560 template<typename T> 561 finline ArrayTpl<T,true> static_A( T*& array, size_t length ) { 562 return ArrayTpl<T, true>(array,length); 558 563 } 559 564 -
source/ariba/utility/system/SystemEvent.h
r3690 r6919 59 59 const void* data; //< data attached to the event 60 60 61 public: 61 public: 62 62 // TODO: these should be private, but the gcc 3.4 in scratchbox for cross-compiling 63 63 // for Maemo (Nokia N810) gets confused when the friend class SystemQueue has a … … 66 66 uint32_t delayTime; //< time the event is scheduled at, or 0 if it is to be fired immediately 67 67 uint32_t remainingDelay; //< remaining delay time for sleeping 68 68 69 69 public: 70 inline SystemEvent( 71 SystemEventListener* mlistener, 72 SystemEventType mtype = SystemEventType::DEFAULT, 73 void* mdata = NULL) 74 : scheduledTime(boost::posix_time::not_a_date_time), 75 delayTime(0), 76 remainingDelay(0), 77 listener(mlistener), 78 type(mtype), 79 data(mdata) { 70 inline SystemEvent(SystemEventListener* mlistener, SystemEventType mtype = 71 SystemEventType::DEFAULT, void* mdata = NULL) : 72 listener(mlistener), type(mtype), data(mdata), scheduledTime( 73 boost::posix_time::not_a_date_time), delayTime(0), 74 remainingDelay(0) 75 76 { 80 77 } 81 78 82 79 template<typename T> 83 inline SystemEvent( SystemEventListener* mlistener, 84 SystemEventType mtype = SystemEventType::DEFAULT, 85 T* mdata = NULL) 86 : scheduledTime(boost::posix_time::not_a_date_time), 87 delayTime(0), 88 remainingDelay(0), 89 listener(mlistener), 90 type(mtype), 91 data((void*)mdata) { 80 inline SystemEvent(SystemEventListener* mlistener, SystemEventType mtype = 81 SystemEventType::DEFAULT, T* mdata = NULL) : 82 listener(mlistener), type(mtype), data((void*) mdata), scheduledTime( 83 boost::posix_time::not_a_date_time), delayTime(0), 84 remainingDelay(0) { 92 85 } 93 94 95 86 96 87 inline SystemEvent(const SystemEvent& copy) { … … 126 117 template<typename T> 127 118 inline T* getData() const { 128 return (T*) *this;119 return (T*) *this; 129 120 } 130 121 … … 147 138 }; 148 139 149 }} // spovnet, common 140 } 141 } // spovnet, common 150 142 151 143 #endif /* SYSTEMEVENT_H_ */ -
source/ariba/utility/system/SystemQueue.cpp
r5316 r6919 125 125 126 126 SystemQueue::QueueThread::QueueThread(QueueThread* _transferQueue) 127 : running( false ), transferQueue( _transferQueue ) {127 : transferQueue( _transferQueue ), running( false ) { 128 128 } 129 129 -
source/ariba/utility/system/SystemQueue.h
r4702 r6919 234 234 #ifdef UNDERLAY_OMNET 235 235 236 #if 0 236 237 // 237 238 // the system queue must be a singleton in simulations, too. … … 243 244 // this is the macro definition from macros.h 244 245 // 245 // #define Define_Module(CLASSNAME) \246 // static cModule *CLASSNAME##__create() {return new CLASSNAME();} \246 // #define Define_Module(CLASSNAME) /backslash 247 // static cModule *CLASSNAME##__create() {return new CLASSNAME();} /backslash 247 248 // EXECUTE_ON_STARTUP(CLASSNAME##__mod, modtypes.instance()->add(new cModuleType(#CLASSNAME,#CLASSNAME,(ModuleCreateFunc)CLASSNAME##__create));) 248 249 // 249 250 // and this is how we do it :) 250 251 // 252 #endif 251 253 252 254 static cModule* SystemQueue__create() { -
source/ariba/utility/transport/tcpip/protlib/address.h
r5284 r6919 790 790 791 791 node *insert(netaddress &key, data_type &dat) { 792 node *a, *b , *c, *n, *m;793 int cmp , pos = 0;792 node *a, *b = NULL, *c, *n, *m; 793 int cmp = 0, pos = 0; 794 794 795 795 c = a = key.is_ipv4() ? v4head : v6head; -
source/ariba/utility/transport/tcpip/tcpip.cpp
r5718 r6919 183 183 datamsg->set_pos(0); 184 184 uint32_t message_size = datamsg->decode32(true)-2; 185 uint16_t remote_port = datamsg->decode16(true);185 //uint16_t remote_port = datamsg->decode16(true); 186 186 187 187 -
source/ariba/utility/types/Identifier.cpp
r4437 r6919 70 70 71 71 void Identifier::clearAddress() { 72 for ( int i = 0; i < array_size; i++)72 for (size_t i = 0; i < array_size; i++) 73 73 key[i] = 0; 74 74 isUnspec = false; … … 77 77 78 78 bool Identifier::setAddress(string address) { 79 // TODO79 return false; 80 80 } 81 81 … … 204 204 if (isUnspec) return std::string("<unspec>"); 205 205 206 char temp[ 80];206 char temp[250]; 207 207 if (base == 16) { 208 208 int k = 0; … … 238 238 } 239 239 #endif 240 return "<not supported>"; 240 241 } 241 242 -
source/ariba/utility/types/ServiceID.h
r3690 r6919 75 75 76 76 inline bool isUnspecified() const { 77 return (id==~ 0);77 return (id==~(uint32_t)0); 78 78 } 79 79 -
source/ariba/utility/visual/DddVis.cpp
r6900 r6919 125 125 order = ORDER_RANDOMLY; 126 126 break; 127 default: 128 break; 127 129 } 128 130
Note:
See TracChangeset
for help on using the changeset viewer.