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);
}
Exemple #2
0
RealmList::RealmList(std::vector<Realm> realms) : realms_(std::make_shared<RealmMap>()) {
    add_realm(std::move(realms));
}