> (you don't have to strictly follow this form)

**Use case**

Support manually snapshot for Keeper.

**Describe the solution you'd like**

Throught 4lw commands, such as `csnp`.


break;
            }
            default:
                break;
        }
        return nuraft::cb_func::ReturnCode::Ok;
    }
    size_t last_commited = state_machine->last_commit_index();
    size_t next_index = state_manager->getLogStore()->next_slot();
    bool commited_store = false;
    if (next_index < last_commited || next_index - last_commited <= 1)
        commited_store = true;
    auto set_initialized = [this]()
    {
        std::lock_guard lock(initialized_mutex);
        initialized_flag = true;
        initialized_cv.notify_all();
    };
    switch (type)
    {
        case nuraft::cb_func::BecomeLeader:
        {
            
            if (commited_store || initial_batch_committed)
                set_initialized();
            return nuraft::cb_func::ReturnCode::Ok;
        }
        case nuraft::cb_func::BecomeFollower:
        case nuraft::cb_func::GotAppendEntryReqFromLeader:
        {