public interface MessageObserver
Modifier and Type | Method and Description |
---|---|
void |
messageAvailable(String mountPoint, ParsedMessage message)
通知编码消息可用。
|
void messageAvailable(String mountPoint, ParsedMessage message)
请注意,此方法将从内部专用的流读取线程中调用。实现必须注意:
在向NtripClient
添加观察者时,唯一可以指定的过滤是基于消息类型和挂载点。如果需要额外的过滤(例如基于消息内容如卫星ID),则必须在通知时观察者自行执行(请参见下面的示例)。
实现此方法的推荐方式是简单地从消息字段构建一个领域对象(例如GNSS传播器),并将其存储在观察者类中作为实例字段,使用AtomicReference
如下:
public class GPSProvider implements PVCoordinatesProvider, RTCMMessageObserver { private final int filteringId; private final AtomicReference<GPSPropagator> propagator; public void messageAvailable(String mountPoint, ParsedMessage message) { MessageXXX msg = (MessageXXX) message; GPSPropagator oldPropagator = propagator.get(); if (msg.getSatId() == filteringId) { GPSPropagator newPropagator = new GPSPropagator(msg.get...(), msg.get...(), msg.get...()); // 只有在我们沉睡时没有通知其他观察者时才设置传播器 propagator.compareAndSet(oldPropagator, newPropagator); } } public TimeStampedPVCoordinates getPVCoordinates(AbsoluteDate date, Frame frame) { GPSPropagator lastAvailablePropagator = propagator.get(); // 使用检索到的传播器计算位置-速度 } }
mountPoint
- 消息来自的挂载点
message
- 最后一个可用消息
Copyright © 2002-2023 CS GROUP. All rights reserved.