BObjectImp* PolSystemExecutorModule::mf_AddRealm(/*name,base*/) { const String* realm_name; const String* base; if ( !(getStringParam(0, realm_name) && getStringParam(1, base))) { return new BError("Invalid parameter"); } Realm* baserealm = find_realm(base->value()); if ( !baserealm ) return new BError("BaseRealm not found."); if ( baserealm->is_shadowrealm ) return new BError("BaseRealm is a ShadowRealm."); if ( defined_realm(realm_name->value()) ) return new BError("Realmname already defined."); add_realm(realm_name->value(), baserealm); if (ssopt.decay_items) { ostringstream thname; thname << "Decay_" << realm_name->value(); threadhelp::start_thread( decay_thread_shadow, thname.str().c_str(), (void*)(find_realm(realm_name->value())->shadowid) ); } return new BLong(1); }
RealmList::RealmList(std::vector<Realm> realms) : realms_(std::make_shared<RealmMap>()) { add_realm(std::move(realms)); }