Interface StateRelay
- All Known Implementing Classes:
RestStateRelay
Carries state between devices the platform will not carry it between -- an iPhone and an Android tablet, two devices that are never in the same room, a phone and the web build.
Codename One ships no server for this. A relay is the application's own endpoint, which is
also the only honest arrangement: the relay has to know which states belong to the same
person, and that is the app's account system, not the framework's. RestStateRelay covers
the common case over HTTPS; implement this interface directly for anything else.
Both methods are called from a background thread and may block. Neither is called on the event
dispatch thread, so ordinary blocking com.codename1.io code is correct here.
-
Method Summary
-
Method Details
-
publish
Sends a state. Called after each checkpoint, so implementations that talk to a slow endpoint should coalesce rather than send every one.
Parameters
state: the state to send
Throws
java.io.IOException: when the send failed. The framework logs it and keeps the state, which the next checkpoint's publisher sends -- unless a newer state has superseded it by then, or the user signed out in between. It is not retried on a timer: one attempt per change beats spinning against an endpoint that is down.
- Throws:
IOException
-
fetch
Asks for the newest state this user has on any device. Returning this device's own most recent state is fine and expected -- the framework recognizes its own echo by device id and sequence, and ignores it.
Returns
the state, or null when the endpoint has nothing
Throws
java.io.IOException: when the fetch failed
- Throws:
IOException
-