LoadState#

void YR::LoadState(const int &timeout = DEFAULT_SAVE_LOAD_STATE_TIMEOUT)#

Loads the saved instance state.

#include "yr/yr.h"

class Counter {
public:
    Counter() {}
    ~Counter() {}
    explicit Counter(int init) : count(init) {}

    static Counter *FactoryCreate(int init)
    {
        return new Counter(init);
    }

    int Save()
    {
        YR::SaveState();
        return count;
    }

    int Load()
    {
        YR::LoadState();
        return count;
    }

    int Add(int x)
    {
        count += x;
        return count;
    }

    YR_STATE(count)

private:
    int count;
};

YR_INVOKE(Counter::FactoryCreate, &Counter::Add, &Counter::Save, &Counter::Load)

int main()
{
    YR::Config conf;
    conf.mode = YR::Config::Mode::CLUSTER_MODE;
    YR::Init(conf);
    auto creator1 = YR::Instance(Counter::FactoryCreate).Invoke(1);
    auto member1 = creator1.Function(&Counter::Add).Invoke(3);
    auto res1 = *YR::Get(member1);
    printf("res1 is %d\n", res1);  // 4
    auto member2 = creator1.Function(&Counter::Save).Invoke();
    auto res2 = *YR::Get(member2);
    printf("res2 is %d\n", res2);  // 4
    auto member3 = creator1.Function(&Counter::Add).Invoke(3);
    auto res3 = *YR::Get(member3);
    printf("ref3 is %d\n", res3);  // 7
    auto member4 = creator1.Function(&Counter::Load).Invoke();
    auto res4 = *YR::Get(member4);
    printf("res4 is %d\n", res4);  // 7
    auto member5 = creator1.Function(&Counter::Add).Invoke(3);
    auto res5 = *YR::Get(member5);
    printf("res5 is %d\n", res5);  // 7
    YR::Finalize();
    return 0;
}

Parameters:

timeout – Timeout in seconds, default value: 30.

Throws:

Exception

  1. Local mode does not support LoadState, and an exception “LoadState is not supported in local mode” will be thrown.

  2. Cluster mode only supports this operation in remote code; if called in local code, an exception “LoadState is only

    supported on cloud with posix api” will be thrown.

const int YR::DEFAULT_SAVE_LOAD_STATE_TIMEOUT = 30#