I’m trying to wrap my mind around the worst case that can happen when devices and agents communicate heavily with each other and device peripherals. Am I correct that all of the following statements are true?
- Either agent or device can send messages to the other at any rate. It is not necessary that a message arrives at the destination before the next message send can be initiated.
- All messages arrive in the same sequence as they were sent. No duplicates will be received, and none will be missing.
- It is generally undetermined how long a it takes to deliver a message.
- There is no multithreading within device code. No callback in user code will be executed as long as some other user code is still executing on the device. The same is true for agent code.
- However, device code and agent code may run in parallel.
- There is an incoming and outgoing message queue on both device and agent.
- Messages can be sent even if the receiver is currently executing code.
- It is impossible for deadlocks between agents and devices to occur.
- Is there a maximum message size?
- what exactly happens to messages if a device is down for extended periods of time, and/or WiFi is unreliable?