参考资源
- rosmaster wiki
- Python2 SimpleXMLRPCServer manual
register_instane()注册实例中不以下划线开头,并且callable的对象。
代码路径入口
- rosmaster command
ros_comm/tools/rosmaster/scripts/rosmaster
- rosmaster logic entry
ros_comm/tools/rosmaster/src/rosmaster/main.py rosmaster_main()
implementation
核心逻辑入口在 Master class,实现在ros_comm/tools/rosmaster/src/rosmaster/master.py
文件中。
启动流程为:
- 解析传入参数
- 初始化 ROSMasterHandler
- 初始化 XmlRpcNode(server),并启动
- 检查XmlRpcNode(server)状态,直到退出
ROSMasterHandler
最主要的业务逻辑都在这里,实现文件:ros_comm/tools/rosmaster/src/rosmaster/master_api.py
。
对外导出的方法、功能
EXTERNAL API
- shutdown
Stop this server. - getUri
Get the XML-RPC URI of this server.
通过xmlrpc server获取xmlrpc server的地址,有种先有鸡还是先有蛋的纠结。 - getPid
Get the PID of this server.
PARAMETER SERVER ROUNTINES
- deleteParam
- setParam
- getParam
- searchParam
- subscribeParam
- unsubscribeParam
- hasParam
- getParamNames
NOTIFICATION ROUTINES
- param_update_task
SERVICE PROVIDER
- registerService
Register the caller as a provider of the specified service. - lookupService
- unregisterService
PUBLISH/SUBSCRIBE
- registerSubscriber
- unregisterSubscriber
- registerPublisher
- unregisterPublisher
GRAPH STATE APIS
- lookupNode
- getPublishedTopics
- getTopicTypes
- getSystemState
核心逻辑
- 信息的存储检索
- 信息的订阅通知