//
// Created by ricardo on 2022/5/6.
//

#ifndef AUTO_PILOT_BUS_BUS_IO_H
#define AUTO_PILOT_BUS_BUS_IO_H
#include "rail.h"
#include "query.h"

enum read_state{
    /**
     * 时钟
     */
    clock = 0,
    /**
     * 读取中
     */
    reading,
    /**
     * 结束
     */
    end
};

/**
 * 读取输入的状态
 */
typedef enum read_state read_state_t;

/**
 * 读取配置文件,创建轨道链表,同时读取需要使用的策略
 * @return 指向轨道链表的指针
 */
rail_node_t* ReadConfigFile();

/**
 * 读取标准输入流中的输入
 * @param up_queries 上车的请求队列
 * @param down_queries 下车的请求队列
 * @return 当前读取的状态
 */
read_state_t ReadInput(up_bus_t* up_queries, down_bus_t* down_queries);

/**
 * 打印当前的状态
 * @param up_queries 上车的请求队列
 * @param down_queries 下车的请求队列
 * @param rails 轨道链表
 */
void PrintState(up_bus_t* up_queries, down_bus_t* down_queries, rail_node_t* rails);

#endif //AUTO_PILOT_BUS_BUS_IO_H