Analysis
Overview
Remote objects are those that are stored on a server. A book is a remote object, as is an image. Sophie needs to be able to handle local and remote objects equally.
Load times are important. For example, if a timeline is told to play, it needs to know that all objects are usable in some state before the timeline can be started. Along these lines, if the timeline changes a page and the page is not loaded, the timeline needs to pause until the page is load, or continue in a non-blocked manner.
This is one example of how remote objects need to either report their loading status, or block a semaphore so that other objects can block until the loading is done, OR remote objects need to degrade gracefully if not fully loaded (although I don't see how this can happen)
Task requirements
- Define how remote objects will work in Sophie
- Define how different types of remote objects might be loaded (a movie on a website not connected with Sophie)
- Define how the loading protocol will work, such that other systems can block until loading is complete
Task result
The result of this task is code
Implementation idea
- There may be many different ways to load remote objects, but PRO_LIB cannot use it's own extensions system, so there might need to be a new registration API
- Remote objects may go through the change server to load, which would also allow for caching
Related
How to demo
Show how to store and retrieve an object from the server.
Design
(Describe your design here.)
Implementation
(Describe and link the implementation results here (from the wiki or the repository).)
Testing
(Place the testing results here.)
Comments
desc("deal with remote objects somehow ")
connectors between client and server, modularity relies on the prolib, so the prolib cannot use extensions and extension points. So the connections should not be attached by extension points but some other mechanism, such as registerConnection API
Resources interface called remoteEntity? Styles, images, immutuable objects will be serialized because they are small, remote objects on the other hand are managed with the change server, each has an identifier.