45 lines
1.2 KiB
C
45 lines
1.2 KiB
C
#pragma once
|
|
|
|
#include "core/command_buffer.h"
|
|
#include "core/event.h"
|
|
#include "core/plan.h"
|
|
#include "core/rules.h"
|
|
#include "core/state.h"
|
|
|
|
typedef struct policy_context_t {
|
|
const state_t *state;
|
|
const rules_t *rules;
|
|
} policy_context_t;
|
|
|
|
/**
|
|
* @brief 事件路由:将运行时事件翻译为语义命令
|
|
*
|
|
* @param ctx 策略上下文
|
|
* @param event 需要翻译的事件
|
|
* @param out 命令输出缓冲区,路由产生的命令追加到此处
|
|
*
|
|
* @return true 产生了至少一条需要执行的命令
|
|
* @return false 产生了至少一条需要执行的命令
|
|
*/
|
|
bool policy_route_event(
|
|
const policy_context_t *ctx,
|
|
const event_t *event,
|
|
command_buffer_t *out
|
|
);
|
|
|
|
/**
|
|
* @brief 将语义命令应用到状态,并累积后端副作用到 plan
|
|
*
|
|
* @param ctx 策略上下文
|
|
* @param command_buffer 待应用的命令序列
|
|
* @param plan 副作用累积器,记录后端需要执行的操作
|
|
*
|
|
* @return true 产生了至少一项后端副作用
|
|
* @return false 无副作用产生
|
|
*/
|
|
bool policy_apply_command(
|
|
const policy_context_t *ctx,
|
|
const command_buffer_t *command_buffer,
|
|
plan_t *plan
|
|
);
|