assert(0);
}
+ class_data->version = version;
+
osd->send_class_request(cname.c_str(), version);
return NULL;
}
if (*add_iter) {
if (data.status == ClassData::CLASS_REQUESTED) {
- dout(0) << "added class '" << info_iter->name << "'" << dendl;
+ dout(10) << "added class '" << info_iter->name << "'" << dendl;
data.impl = *impl_iter;
++impl_iter;
data.status = ClassData::CLASS_LOADED;
void ClassHandler::resend_class_requests()
{
- for (map<nstring,ClassData>::iterator p = classes.begin(); p != classes.end(); p++)
+ for (map<nstring,ClassData>::iterator p = classes.begin(); p != classes.end(); p++) {
+ dout(20) << "resending class request "<< p->first.c_str() << " v" << p->second.version << dendl;
osd->send_class_request(p->first.c_str(), p->second.version);
+ }
}
ClassHandler::ClassData *ClassHandler::register_class(const char *cname)
#include "objclass/objclass.h"
#include "common/Cond.h"
+#include "common/ClassVersion.h"
class OSD;
v.ver = default_ver;
}
- iter = m.find(ver);
+ iter = m.find(v);
if (iter != m.end())
return &(iter->second);
void add(ClassInfo& library) {
m[library.version] = library;
+ if (default_ver.length() == 0)
+ default_ver = library.version.ver;
}
void remove(ClassInfo& library) {
while (mapiter != list.library_map.end()) {
ClassVersionMap& map = mapiter->second;
+ dout(10) << "active class version=" << map.default_ver << dendl;
tClassVersionMap::iterator iter = map.begin();
while (iter != map.end()) {
- ss << iter->second.name << " (v" << iter->second.version << ")" << std::endl;
+ string def_str = "";
+ if (iter->second.version.str() == map.default_ver)
+ def_str = " [active]";
+ ss << iter->second.name << " (v" << iter->second.version << ")" << def_str << std::endl;
++iter;
}
++mapiter;
int len = (*p).name.length() + 16;
int bin_len;
char store_name[len];
+ dout(0) << "got CLASS_GET name=" << (*p).name << " ver=" << (*p).version << dendl;
snprintf(store_name, len, "%s.%s.%s", (*p).name.c_str(), ver.str(), ver.arch());
bin_len = mon->store->get_bl_ss(impl.binary, "class_impl", store_name);
assert(bin_len > 0);