在很多情况下,程序需要命令行的输入控制,如更改参数、重启等。TLMsgScanner为命令行消息输入模块,可以通过命令行给任何一个模块发送消息。如启动了TLMsgScanner,则可以以下参数发送消息:
m=modulename a=action p1=value1 p2=value2
m:接收消息的模块 a:消息中的指令action p1 、p2 为消息中的参数 。m、 a 为必须项。例如要给定时案例中的定时模块发送消息:
m=myTaskManger a=startTask taskid=pcboy_eat
配置文件:
<?xml version="1.0" encoding="UTF-8" ?> <moduleConfig> <params> <defaultModule value="myTaskManger"/> <defaultAction value="setTaskStatus"/> </params> <msgToModules> <module name="HSServer" actions="info;warn;debug" ></module> <module name="myTaskManger" actions="setTaskStatus;shutdown" ></module> </msgToModules> </moduleConfig>
为防止消息误发及安全,msgToModules 项定义接收消息的模块 及可发送的指令 actions,上例配置中定义了允许接收命令行的模块为 HSServer及 myTaskManger, 其中myTaskManger 只允许发送指令 setTaskStatus、shutdown。
为方便,定义了默认模块defaultModule 及默认指令defaultAction ,当不设定m 及 a时,采用默认模块及默认的指令。
命令行消息输入模块的启动与其他模块一样,可以在程序入口函数中启动,或工厂boot中启动 ,或被控制模块中等。