> (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`.


std::atomic<int64_t> internal_session_id_counter{0};
    KeeperSnapshotManagerS3 snapshot_s3;
    
    void requestThread();
    
    void responseThread();
    
    void sessionCleanerTask();
    
    void snapshotThread();
    
    void updateConfigurationThread();
    void setResponse(int64_t session_id, const Coordination::ZooKeeperResponsePtr & response);
    
    
    void addErrorResponses(const KeeperStorage::RequestsForSessions & requests_for_sessions, Coordination::Error error);
    
    
    void forceWaitAndProcessResult(RaftAppendResult & result, KeeperStorage::RequestsForSessions & requests_for_sessions);
public:
    
    KeeperDispatcher();
    
    ~KeeperDispatcher();
    
    
    void initialize(const Poco::Util::AbstractConfiguration & config, bool standalone_keeper, bool start_async);
    void startServer();
    bool checkInit() const