统一对象消息编程详解——命令行消息输入模块

   在很多情况下,程序需要命令行的输入控制,如更改参数、重启等。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中启动 ,或被控制模块中等。

 

posted on 2019-01-27 15:45  天龙117  阅读(163)  评论(0)    收藏  举报

导航