Changeset 312
- Timestamp:
- 02/26/08 23:23:14 (9 months ago)
- Location:
- trunk/thrucommon/src
- Files:
-
- 2 modified
-
Spread.cpp (modified) (4 diffs)
-
Spread.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/thrucommon/src/Spread.cpp
r311 r312 47 47 { 48 48 LOG4CXX_INFO (logger, "~Spread"); 49 map<string, vector<string> >::iterator i;49 map<string, set<string> >::iterator i; 50 50 for (i = this->groups.begin (); 51 51 i != this->groups.end (); … … 60 60 { 61 61 LOG4CXX_DEBUG (logger, "join: group=" + group); 62 map<string, vector<string> >::iterator i;62 map<string, set<string> >::iterator i; 63 63 i = this->groups.find (group.c_str ()); 64 64 if (i != this->groups.end ()) … … 86 86 { 87 87 LOG4CXX_DEBUG (logger, "leave: group=" + group); 88 map<string, vector<string> >::iterator i;88 map<string, set<string> >::iterator i; 89 89 i = this->groups.find (group.c_str ()); 90 90 if (i != this->groups.end ()) … … 195 195 if (Is_regular_mess (service_type)) 196 196 { 197 // TODO: null terminate the message, can't hurt and we, so 198 // long as it's not size - 1 in length... 199 buf[buf_len] = '\0'; 200 LOG4CXX_DEBUG (logger, string ("receive: buf=") + buf); 197 // can't really hurt since we don't change the size, only 198 // useful when plain text is being sent 199 if (buf_len < buf_size) 200 buf[buf_len] = '\0'; 201 // convert groups array to a vector 201 202 vector<string> group_strs; 202 203 for (int n = 0; n < num_groups; n++) 203 204 group_strs.push_back (groups[n]); 205 // and dispatch 204 206 this->dispatch (sender, group_strs, type, buf, buf_len); 207 // count it as handled 205 208 i++; 206 209 } 207 // TODO: handle membership messages here 210 else if (Is_reg_memb_mess (service_type)) 211 { 212 membership_info memb_info; 213 int ret = SP_get_memb_info (buf, service_type, &memb_info); 214 if (ret < 0) 215 { 216 string error = SP_error_to_string (ret); 217 LOG4CXX_ERROR (logger, error); 218 throw new SpreadException (error); 219 } 220 else if (Is_caused_join_mess (service_type)) 221 { 222 LOG4CXX_INFO (logger, string ("run: new member=") + 223 memb_info.changed_member); 224 } 225 else if (Is_caused_leave_mess (service_type) || 226 Is_caused_disconnect_mess (service_type)) 227 { 228 LOG4CXX_INFO (logger, string ("run: leaving member=") + 229 memb_info.changed_member); 230 } 231 else if (Is_caused_network_mess (service_type)) 232 { 233 LOG4CXX_INFO (logger, "run: network change..."); 234 } 235 236 this->groups[sender].clear (); 237 LOG4CXX_DEBUG (logger, string ("run: membership group=") + 238 sender); 239 for (int j = 0; j < num_groups; j++) 240 { 241 this->groups[sender].insert (groups[j]); 242 LOG4CXX_DEBUG (logger, string ("run: member=") + 243 groups[j]); 244 } 245 } 208 246 } 209 247 else -
trunk/thrucommon/src/Spread.h
r311 r312 11 11 #include <string> 12 12 #include <queue> 13 #include <set> 13 14 #include <vector> 14 15 … … 86 87 std::string private_group; 87 88 mailbox mbox; 88 std::map<std::string, std:: vector<std::string> > groups;89 std::map<std::string, std::set<std::string> > groups; 89 90 std::map<std::string, std::map<int, std::map<std::string, 90 91 std::vector<SubscriberCallbackInfo *> > > > subscriptions;
