update cmd dispatcher

This commit is contained in:
2023-08-27 12:30:12 +08:00
parent 8a1f71e855
commit 3252e61c0d
8 changed files with 921 additions and 518 deletions

57
Unvirt/UnvirtContext.hpp Normal file
View File

@ -0,0 +1,57 @@
#pragma once
#include "AccessibleValue.hpp"
#include "TerminalHelper.hpp"
#include "StructFormatter.hpp"
#include "CmdHelper.hpp"
#include <VTAll.hpp>
#include <CK2/CKContext.hpp>
#include <CK2/CKFile.hpp>
#include <cstdio>
#include <iostream>
namespace Unvirt::Context {
class UnvirtContext {
public:
UnvirtContext();
~UnvirtContext();
LIBCMO_DISABLE_COPY_MOVE(UnvirtContext);
void Run();
protected:
enum class ViewPart {
Objects, Managers
};
void PrintCommonError(const char* u8_fmt, ...);
void ProcLoad(bool is_deep, const CmdHelper::ArgumentsMap& amap);
void ProcUnLoad(const CmdHelper::ArgumentsMap& amap);
void ProcInfo(const CmdHelper::ArgumentsMap& amap);
void ProcLs(ViewPart parts, const CmdHelper::ArgumentsMap& amap);
void ProcData(ViewPart parts, const CmdHelper::ArgumentsMap& amap);
void ProcChunk(ViewPart parts, const CmdHelper::ArgumentsMap& amap);
void ProcItems(const CmdHelper::ArgumentsMap& amap);
void ProcEncoding(const CmdHelper::ArgumentsMap& amap);
void ProcTemp(const CmdHelper::ArgumentsMap& amap);
void ProcExit(const CmdHelper::ArgumentsMap& amap);
protected:
bool HasOpenedFile();
void ClearDocument();
void PrintContextMsg(LibCmo::CK2::CKSTRING msg);
CmdHelper::CommandRoot m_Root;
CmdHelper::HelpDocument* m_Help;
CmdHelper::CmdSplitter m_Splitter;
size_t m_PageLen;
bool m_OrderExit;
LibCmo::CK2::CKContext* m_Ctx;
LibCmo::CK2::CKFileReader* m_FileReader;
};
}