通讯
主要Tool
HFUTMessageTool
在MessageManager之上的一层封装,主要功能:
- 完成消息发送前的编码,处理EncodingException
- 完成收到消息后的解码,处理DecodingException
- 完成对消息的筛选,只接受[[通讯#HFUTMessage|HFUTMessage]]
处理消息的发送与接收:
- 发送消息:通过从各种工具从每一周期的更新提取出的消息按照需求放到messagesToSendByRadio
或messagesTeSendByVoice
中(发送消息由onCalcAfter
处理,同时进行编码的操作)
- 接收消息:
- getAndDecodeMessages
:在每个周期开始时调用,通过massageManager
获得本周期的消息,并对有效消息一一进行解码,然后将其添加到receivedMessages
并进行分类,方便智能体获取消息和获取具体类型的消息
- List<CommunicationMessage> getReceivedMessages
:获取本周期的所有消息
- <T extends CommunicationMessage> List<T> getReceivedMessages(Class<T> type)
:获取某具体类型的所有消息
PropertyManageTool
在预计算阶段,提前记录固定的数据,如每种智能体数量,各种建筑物的id、类型
HFUTChannelSubscriber
用于智能体订阅信道(无重复订阅)
HFUTChannelCoordinator
将信息分发到每个信道上去(直接平均分配是一个好策略吗???)
message
HFUTMessage
property
对于信息中可能包含的内容进行包装,并提供了一个编解码的方法
exception
编码异常(EncodingException
)和解码异常()DecodingException