#pragma once
#include <memory>
#include "client.h"
#include "xsched/types.h"
#include "xsched/utils/common.h"
namespace xsched::service
{
class Cli
{
public:
Cli(const std::string &addr, uint16_t port);
~Cli() = default;
int ListXQueues();
int TopXQueues(uint64_t interval_ms);
int ConfigXQueue(XQueueHandle handle, XPreemptLevel level,
int64_t threshold, int64_t batch_size);
int QueryPolicy();
int SetPolicy(const std::string &policy_name);
int SetPriority(XQueueHandle handle, Priority prio);
int SetProcessPriority(PID pid, Priority prio);
int SetUtilization(XQueueHandle handle, Utilization util);
int SetProcessUtilization(PID pid, Utilization util);
int SetTimeslice(Timeslice ts_us);
private:
std::unique_ptr<Client> client_ = nullptr;
};
}