history/emulator/emulator.proto
syntax = "proto3";
package jsgenerate_kb2022.history.emulator;
option go_package = "gateway/protocol/history/emulator";
import "google/api/annotations.proto";
import "adadd52b-e7a2-4fe2-9f15-356ceddbd4f6/utils/utils.proto";
// 供用戶查詢 模擬器歷史
service Emulator {
// 查詢模擬器
rpc Find (FindRequest) returns (FindResponse){
option (google.api.http) = {
get: "/api/v1/history/emulator"
};
}
// 查詢日誌
rpc FindLogger(FindLoggerRequest) returns (FindLoggerResponse){
option (google.api.http) = {
get: "/api/v1/history/emulator/loggers"
};
}
// 查詢指定 模擬器 在指定 樂觀鎖下 的日誌
rpc ByLocker(ByLockerRequest) returns (ByLockerResponse){
option (google.api.http) = {
get: "/api/v1/history/emulator/loggers/by_locker"
};
}
}
// 模擬器數據
message Data{
// 模擬器唯一識別碼 和設備 id 一致
int64 id = 1;
// 設備 邏輯碼
string logic = 2;
// 設備 物理碼
string physical = 3;
// 模擬器 工作地址
string addr = 4;
// 模擬器是否已經運行
bool started = 5;
// 運行時間 unix
int64 start = 6;
// 停止時間 unix
int64 stop = 7;
// 設備是否已經連接到模擬器,只有在 此值爲true 時 fieldXXX 才有效
bool connected = 15;
// 最後連接時間 unix
int64 connect = 16;
// 最後掉線時間 unix
int64 disconnect = 17;
// 模擬器 當前 樂觀鎖
int64 locker = 20;
// 模擬器 當前 狀態 樂觀鎖
int64 last = 21;
// 調度器 id,只有在此值非0時其它 schedulerXXX 屬性才有效
int64 schedulerID = 30;
// 任務 id
int64 schedulerTask = 31;
// 任務 來源
uint32 schedulerSource = 32;
// 任務 優先級
int32 schedulerPriority = 33;
// 任務 等級
int32 schedulerLevel = 34;
// 任務 目標
repeated string schedulerTargets = 35;
// 任務房間號
string schedulerRoom = 36;
// 設備安裝軟件版本號
string fieldVersion = 40;
// 啓動時間 uinx
int64 fieldStartAt = 41;
// 設備音量
int32 fieldVolume = 42;
// 對講開關
bool fieldTalkie = 43;
// 對講機參數
string fieldTalkieOption = 44;
}
message FindRequest{
jsgenerate_kb2022.utils.FindLimit limit = 1;
// id not in (...)
repeated int64 notID = 50;
// id in
repeated int64 id = 2;
// <0 查找 沒有啓動的模擬器
// 0 忽略此參數
// >0 查找 已經啓動的模擬器
int32 started = 3;
// <0 查找 沒有設備連接的模擬器
// 0 忽略此參數
// >0 查找 已經存在設備連接的模擬器
int32 connected = 4;
// 如果 >0 返回 啓動時間 unix >= start 的模擬器
int64 afterStart = 10;
// 如果 >0 返回 啓動時間 unix <= start 的模擬器
int64 beforeStart = 11;
// 如果 >0 返回 停止時間 unix >= stop 的模擬器
int64 afterStop = 12;
// 如果 >0 返回 停止時間 unix <= stop 的模擬器
int64 beforeStop = 13;
// 如果 >0 返回 連接時間 unix >= connect 的模擬器
int64 afterConnect = 14;
// 如果 >0 返回 連接時間 unix <= connect 的模擬器
int64 beforeConnect = 15;
// 如果 >0 返回 掉線時間 unix >= disconnect 的模擬器
int64 afterDisconnect = 16;
// 如果 >0 返回 掉線時間 unix <= disconnect 的模擬器
int64 beforeDisconnect = 17;
// 查找包含 這些 邏輯碼的 模擬器
repeated string logic = 30;
// 查找包含 這些 物理碼的 模擬器
repeated string physical = 31;
}
message FindResponse{
jsgenerate_kb2022.utils.FindResult result = 1;
repeated Data data = 2;
}
// 日誌
message Logger{
// 唯一 id
int64 id = 1;
// 模擬器 id
int64 emulator = 2 ;
// 日誌等級,用於確定日誌重要性
// * 1 Debug 用於 開發/測試/排錯 時使用,在寫入 Debug 日誌時,系統不會保證寫入成功
// * 2 Info 一般信息,通常是任務執行中的一些狀態變化,比例流程任務中播放了新的音樂,會任務停止之類的通常信息
// * 3 Warn 警告,這通常是在執行時發生了錯誤,例如一個流程任務使用了三首音頻資產,其中一個資產已經損毀無法播放,但這不會影響另外兩個資產的播放
// * 4 Error 錯誤,系統發生了嚴重的錯誤,任務很可能無法正常執行,例如發生了網路故障,系統無法將任務推送給後端設備進行執行
int32 level = 3;
// 日誌創建時間 unix
int64 createAt = 4;
// 日誌所屬 樂觀鎖
int64 locker = 5;
// 日誌包含的文本信息
string message = 6;
}
message FindLoggerRequest{
jsgenerate_kb2022.utils.FindLimit limit = 1;
// id not in (...)
repeated int64 notID = 50;
// id in
repeated int64 id = 2;
// 模擬器 id in
repeated int64 emulator = 3;
// 日誌等級,用於確定日誌重要性
// * 1 Debug 用於 開發/測試/排錯 時使用,在寫入 Debug 日誌時,系統不會保證寫入成功
// * 2 Info 一般信息,通常是任務執行中的一些狀態變化,比例流程任務中播放了新的音樂,會任務停止之類的通常信息
// * 3 Warn 警告,這通常是在執行時發生了錯誤,例如一個流程任務使用了三首音頻資產,其中一個資產已經損毀無法播放,但這不會影響另外兩個資產的播放
// * 4 Error 錯誤,系統發生了嚴重的錯誤,任務很可能無法正常執行,例如發生了網路故障,系統無法將任務推送給後端設備進行執行
repeated int32 level = 4;
// 樂觀鎖 in
repeated int64 locker = 5;
// 如果 >0 返回 創建時間 unix >= createAt 的日誌
int64 after = 10;
// 如果 >0 返回 創建時間 unix <= createAt 的日誌
int64 before = 11;
// 如果 >0 返回 樂觀鎖 locker >= after 的日誌
int64 afterLocker = 12;
// 如果 >0 返回 樂觀鎖 locker <= before 的日誌
int64 beforeLocker = 13;
}
message FindLoggerResponse{
jsgenerate_kb2022.utils.FindResult result = 1;
repeated Logger data = 2;
}
message ByLockerRequest{
int64 emulator = 1;
int64 locker = 2;
}
message ByLockerResponse{
repeated Logger data = 1;
}