The purpose of these diagrams is to show:
- how data flows through the Operation Data Environment (both in an overall sense and for each message type)
- how the ODE interacts with kafka topics as well as its submodules.
- The blue rectangles are java classes that belong to this repository.
- The yellow ovals are kafka topics that the ODE and its submodules consume from and produce to.
- The red rectangles are groups of java classes.
- The red ovals are groups of kafka topics.
- The green rectangles are submodules of the ODE.
- The arrows indicate the data flow. The beginning of the arrow is where it flows from and the end of the arrow is where it flows to.
- Messages come in through the TimDepositorController class and are pushed to the Broadcast Messages and Json Messages groups of topics, as well as the AsnEncoderInput topic.
- The ACM pulls from the Asn1EncoderInput and pushes encoded messages to the Asn1EncoderOutput topic.
- The AsnEncodedDataRouter class pulls from the Asn1EncoderOutput topic and pushes it to the AsnCommandManager class.
- If the message is not signed, it is sent to the SignatureController class to be signed.
- If the message is signed and meant for the RSU, it will be passed to the RsuDepositor class which sends the message to the RSUs.
- If the message is signed, is meant for the SDX and the message has not been double-encoded, yet, it will be sent back to the Asn1EncoderInput topic for encoding.
- If the message is signed, is meant for the SDX and the message has been double-encoded, it will be passed to the SDWDepositorInput, pulled into the SDWD and sent to the SDX.
- The PPM pulls from the Json Messages group of topics and sends filtered messages to the Filtered Json Messages group of topics.
- The GeoJSON Converter pulls from the Json Messages group of topics, converts the messages and pushes them to the Processed Spat/Map group of topics.
- The Conflict Monitor pulls from the Processed Map/Spat group of topics and pushes to the Conflict Monitor Output Topics group.
- Messages come in through the receiver classes and are pushed to the Raw Encoded Messages group of topics.
- The classes under jpo/ode/kafka/listeners/asn1 process these raw encoded messages
- These classes push the message to the Asn1DecoderInput topic.
- The ACM pulls from that topic and pushes decoded messages to the Asn1DecoderOutput topic.
- The Asn1DecodedDataRouter class pulls from the Asn1DecoderOutput topic and deposits messages into the Pojo Messages group of topics and the Json Messages group of topics.
- The PPM pulls from the Json Messages group of topics and pushes filtered messages to the Filtered Json Messages group of topics.
- The GeoJSON Converter pulls from the Json Messages group of topics, converts the messages and pushes them to the Processed Spat/Map group of topics.
- The Conflict Monitor pulls from the Processed Map/Spat group of topics and pushes to the Conflict Monitor Output Topics group.
- Messages are offloaded onto a directory referenced by the FileUploadController class.
- The FileUploadController class indirectly invokes the LogFileToAsn1CodecPublisher class, which handles the offloaded messages.
- If the message is a DriverAlert, the LogFileToAsn1CodecPublisher class pushes it to the OdeDriverAlertJson topic. Any IEEE 1609.3 or unsigned IEEE 1609.2 headers are stripped at this point.
- If the message is a BSM, SPAT, TIM or MAP, the LogFileToAsn1CodecPublisher class pushes it to the corresponding OdeRawEncoded JSON topic. Any IEEE 1609.3 or unsigned IEEE 1609.2 headers are stripped at this point.
- If the message is a BSM, SPAT, TIM or MAP, the relevant router under kafka/listeners/asn1 pulls from the OdeRawEncoded JSON topics and processes the data. This class then writes to the Asn1DecoderInput topic.
- The ACM pulls from that topic and pushes decoded messages to the Asn1DecoderOutput topic.
- The Asn1DecodedDataRouter class pulls from the Asn1DecoderOutput topic and deposits messages into the Pojo Messages group of topics and the Json Messages group of topics.
- The PPM pulls from the Json Messages group of topics and pushes filtered messages to the Filtered Json Messages group of topics.
- The GeoJSON Converter pulls from the Json Messages group of topics, converts the messages and pushes them to the Processed Spat/Map group of topics.
- The Conflict Monitor pulls from the Processed Map/Spat group of topics and pushes to the Conflict Monitor Output Topics group.
- The BSM comes in through the BsmReceiver class and is pushed to the OdeRawEncodedBSMJson topic. Any IEEE 1609.3 or unsigned IEEE 1609.2 headers are stripped at this point.
- The RawEncodedBSMJsonRouter processes messages from the OdeRawEncodedBSMJson topic
- The RawEncodedBSMJsonRouter class pushes the TIM to the Asn1DecoderInput topic. Any remaining signed IEEE 1609.2 headers are removed at this point.
- The ACM pulls from the Asn1DecoderInput topic and pushes the decoded BSM to the Asn1DecoderOutput topic.
- The Asn1DecodedDataRouter class pulls from the Asn1DecoderOutput topic and pushes the BSM to the OdeBsmRxPojo, OdeBsmTxPojo, OdeBsmPojo and OdeBsmDuringEventPojo topics.
- The ToJsonServiceController class pulls from OdeBsmPojo and pushes the BSM in JSON form to the OdeBsmJson topic.
- The PPM pulls from the OdeBsmJson topic and pushes the filtered BSM to the FilteredOdeBsmJson topic.
- The BSM is offloaded onto a directory referenced by the FileUploadController class.
- The FileUploadController class indirectly invokes the LogFileToAsn1CodecPublisher class, which handles the offloaded message.
- The LogFileToAsn1CodecPublisher class pushes the BSM to the RawEncodedBSMJson topic. Any IEEE 1609.3 or unsigned IEEE 1609.2 headers are stripped at this point.
- The RawEncodedBSMJsonRouter processes messages from the OdeRawEncodedBSMJson topic
- The RawEncodedBSMJsonRouter class pushes the TIM to the Asn1DecoderInput topic. Any remaining signed IEEE 1609.2 headers are removed at this point.
- The ACM pulls from the Asn1DecoderInput topic and pushes the decoded BSM to the Asn1DecoderOutput topic.
- The Asn1DecodedDataRouter class pulls from the Asn1DecoderOutput topic and pushes the BSM to the OdeBsmRxPojo, OdeBsmTxPojo, OdeBsmPojo and OdeBsmDuringEventPojo topics.
- The ToJsonServiceController class pulls from OdeBsmPojo and pushes the BSM in JSON form to the OdeBsmJson topic.
- The PPM pulls from the OdeBsmJson topic and pushes the filtered BSM to the FilteredOdeBsmJson topic.
- The TIM comes in through the TimDepositorController class and is pushed to the OdeTimJson, J2735TimBroadcastJson, OdeTimBroadcastJson, OdeTimBroadcastPojo and Asn1EncoderInput topics.
- The ACM pulls from the Asn1EncoderInput topic, encodes the TIM, and pushes it to the Asn1EncoderOutput topic.
- The Asn1EncodedDataRouter class pulls from the Asn1EncoderOutput topic and passes the TIM to the Asn1CommandManager class.
- If the message is not signed, it is sent to the SignatureController class to be signed.
- If the message is signed and meant for the RSU, it will be passed to the RsuDepositor class which sends the message to the RSUs.
- If the message is signed, is meant for the SDX and the message has not been double-encoded, yet, it will be sent back to the Asn1EncoderInput topic for encoding.
- If the message is signed, is meant for the SDX and the message has been double-encoded, it will be passed to the SDWDepositorInput, pulled into the SDWD and sent to the SDX.
- The TIM comes in through the TimReceiver class and is pushed to the OdeRawEncodedTIMJson topic. Any IEEE 1609.3 or unsigned IEEE 1609.2 headers are stripped at this point.
- The RawEncodedTIMJsonRouter processes messages from the OdeRawEncodedTIMJson topic
- The RawEncodedTIMJsonRouter class pushes the TIM to the Asn1DecoderInput topic. Any remaining signed IEEE 1609.2 headers are removed at this point.
- The ACM pulls from the Asn1DecoderInput topic, decodes the TIM, and pushes it to the Asn1DecoderOutput topic.
- The Asn1DecodedDataRouter pulls from the Asn1DecoderOutput topic and pushes the TIM to the OdeTimJson, OdeTimRxJson and OdeDNMsgJson topics.
- The TIM is offloaded onto a directory referenced by the FileUploadController class.
- The FileUploadController class indirectly invokes the LogFileToAsn1CodecPublisher class, which handles the offloaded message.
- The LogFileToAsn1CodecPublisher class pushes the TIM to the RawEncodedTIMJson topic. Any IEEE 1609.3 or unsigned IEEE 1609.2 headers are stripped at this point.
- The RawEncodedTIMJsonRouter processes messages from the OdeRawEncodedTIMJson topic
- The Asn1DecodeTIMJSON class pushes the TIM to the Asn1DecoderInput topic. Any remaining signed IEEE 1609.2 headers are removed at this point.
- The ACM pulls from the Asn1DecoderInput topic, decodes the TIM, and pushes it to the Asn1DecoderOutput topic.
- The Asn1DecodedDataRouter pulls from the Asn1DecoderOutput topic and pushes the TIM to the OdeTimJson, OdeTimRxJson and OdeDNMsgJson topics.
- The SPAT comes in through the SpatReceiver class and is pushed to the OdeRawEncodedSPATJson topic. Any IEEE 1609.3 or unsigned IEEE 1609.2 headers are stripped at this point.
- The RawEncodedSPATJsonRouter processes messages from the OdeRawEncodedSPATJson topic.
- The RawEncodedSPATJsonRouter class pushes the SPAT to the Asn1DecoderInput topic. Any remaining signed IEEE 1609.2 headers are removed at this point.
- The ACM pulls from the Asn1DecoderInput topic, decodes the SPAT, and pushes it to the Asn1DecoderOutput topic.
- The Asn1DecodedDataRouter class pulls from the Asn1DecoderOutput topic and pushes the SPAT to the OdeSpatPojo, OdeSpatRxPojo, OdeDNMsgJson, OdeSpatRxJson, OdeSpatTxPojo and OdeSpatJson topics.
- The GeoJSON Converter pulls from the OdeSpatJson topic, converts the SPAT and pushes it to the ProcessedOdeSpatJson topic.
- The Conflict Monitor pulls from the ProcessedOdeSpatJson topic and pushes to the Conflict Monitor Output Topics group.
- The SPAT is offloaded onto a directory referenced by the FileUploadController class.
- The FileUploadController class indirectly invokes the LogFileToAsn1CodecPublisher class, which handles the offloaded message.
- The LogFileToAsn1CodecPublisher class pushes the SPAT to the OdeRawEncodedSPATJson topic. Any IEEE 1609.3 or unsigned IEEE 1609.2 headers are stripped at this point.
- The RawEncodedSPATJsonRouter processes messages from the OdeRawEncodedSPATJson topic.
- The RawEncodedSPATJsonRouter class pushes the SPAT to the Asn1DecoderInput topic. Any remaining signed IEEE 1609.2 headers are removed at this point.
- The ACM pulls from the Asn1DecoderInput topic, decodes the SPAT, and pushes it to the Asn1DecoderOutput topic.
- The Asn1DecodedDataRouter class pulls from the Asn1DecoderOutput topic and pushes the SPAT to the OdeSpatPojo, OdeSpatRxPojo, OdeDNMsgJson, OdeSpatRxJson, OdeSpatTxPojo and OdeSpatJson topics.
- The GeoJSON Converter pulls from the OdeSpatJson topic, converts the SPAT and pushes it to the ProcessedOdeSpatJson topic.
- The Conflict Monitor pulls from the ProcessedOdeSpatJson topic and pushes to the Conflict Monitor Output Topics group.
- The MAP comes in through the MapReceiver class and is pushed to the OdeRawEncodedMAPJson topic. Any IEEE 1609.3 or unsigned IEEE 1609.2 headers are stripped at this point.
- The RawEncodedMAPJsonRouter processes messages from the OdeRawEncodedMAPJson topic.
- The RawEncodedMAPJsonRouter class pushes the MAP to the Asn1DecoderInput topic. Any remaining signed IEEE 1609.2 headers are removed at this point.
- The ACM pulls from the Asn1DecoderInput topic, decodes the MAP, and pushes it to the Asn1DecoderOutput topic.
- The Asn1DecodedDataRouter class pulls from the Asn1DecoderOutput topic and pushes the MAP to the OdeMapTxPojo and OdeMapJson topics.
- The GeoJSON Converter pulls from the OdeMapJson topic, converts the MAP and pushes it to the ProcessedOdeMapJson topic.
- The Conflict Monitor pulls from the ProcessedOdeMapJson topic and pushes to the Conflict Monitor Output Topics group.
- The MAP is offloaded onto a directory referenced by the FileUploadController class.
- The FileUploadController class indirectly invokes the LogFileToAsn1CodecPublisher class, which handles the offloaded message.
- The LogFileToAsn1CodecPublisher class pushes the MAP to the OdeRawEncodedMAPJson topic. Any IEEE 1609.3 or unsigned IEEE 1609.2 headers are stripped at this point.
- The RawEncodedMAPJsonRouter processes messages from the OdeRawEncodedMAPJson topic.
- The RawEncodedMAPJsonRouter class pushes the MAP to the Asn1DecoderInput topic. Any remaining signed IEEE 1609.2 headers are removed at this point.
- The ACM pulls from the Asn1DecoderInput topic, decodes the MAP, and pushes it to the Asn1DecoderOutput topic.
- The Asn1DecodedDataRouter class pulls from the Asn1DecoderOutput topic and pushes the MAP to the OdeMapTxPojo and OdeMapJson topics.
- The GeoJSON Converter pulls from the OdeMapJson topic, converts the MAP and pushes it to the ProcessedOdeMapJson topic.
- The Conflict Monitor pulls from the ProcessedOdeMapJson topic and pushes to the Conflict Monitor Output Topics group.
- The SRM comes in through the SrmReceiver class and is pushed to the OdeRawEncodedSRMJson topic. Any IEEE 1609.3 or unsigned IEEE 1609.2 headers are stripped at this point.
- The RawEncodedSRMJsonRouter processes messages from the OdeRawEncodedSRMJson topic.
- The RawEncodedSRMJsonRouter class pushes the SRM to the Asn1DecoderInput topic. Any remaining signed IEEE 1609.2 headers are removed at this point.
- The ACM pulls from the Asn1DecoderInput topic, decodes the SRM, and pushes it to the Asn1DecoderOutput topic.
- The Asn1DecodedDataRouter class pulls from the Asn1DecoderOutput topic and pushes the SRM to the OdeSrmTxPojo and OdeSrmJson topics.
- The SSM comes in through the SsmReceiver class and is pushed to the OdeRawEncodedSSMJson topic. Any IEEE 1609.3 or unsigned IEEE 1609.2 headers are stripped at this point.
- The RawEncodedSSMJsonRouter processes messages from the OdeRawEncodedSSMJson topic.
- The RawEncodedSSMJsonRouter class pushes the SSM to the Asn1DecoderInput topic. Any remaining signed IEEE 1609.2 headers are removed at this point.
- The ACM pulls from the Asn1DecoderInput topic, decodes the SSM, and pushes it to the Asn1DecoderOutput topic.
- The Asn1DecodedDataRouter class pulls from the Asn1DecoderOutput topic and pushes the SSM to the OdeSsmPojo and OdeSsmJson topics.
- The PSM comes in through the PsmReceiver class and is pushed to the OdeRawEncodedPSMJson topic. Any IEEE 1609.3 or unsigned IEEE 1609.2 headers are stripped at this point.
- The RawEncodedPSMJsonRouter processes messages from the OdeRawEncodedPSMJson topic.
- The RawEncodedPSMJsonRouter class pushes the SRM to the Asn1DecoderInput topic. Any remaining signed IEEE 1609.2 headers are removed at this point.
- The ACM pulls from the Asn1DecoderInput topic, decodes the PSM, and pushes it to the Asn1DecoderOutput topic.
- The Asn1DecodedDataRouter class pulls from the Asn1DecoderOutput topic and pushes the PSM to the OdePsmTxPojo and OdePsmJson topics.