Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
About MagmaForwardingProxys
Last updated at 3:53 am UTC on 13 October 2008
A single physical Magma repository permits collaboration of a large, centralized domain model. But it is not necessary and, in some cases, even advisable, that the model be kept in one physical repository. It need not be necessary for a geo-map repository with Streets and Citys to be in the same physical repository as the PointsOfInterest database. Logical "links", as capable proxys, allow the perceived repository to stretch infinitely, even possibly manifesting in a sort of "Magma web" of linked repositories that might foster community interaction.

Succinctly, a MagmaForwardingProxy is a "bookmark" to an object in another repository, and transparently behaves as that object. This results in a number of beneficial "side-effects":


How to create the proxy

A bookmark to any object may be created very easily:
  someObject asMagmaForwardingProxy

Magma is able to find the session someObject belongs to and gives you back a MagmaForwardingProxy (the bookmark) that you then attach somewhere to your domain model. This is the "bridge" from your repository to the other. You may, for the most part, treat the proxy as the actual object, it will create a session and ensure a connection to its originating repository, then cache the actual object and forward the message.

What if repositories move?

The user must maintain their MagmaLocations by simply commiting a change to them (ip and port). Since these MagmaLocation objects are shared, a particular location should only need to be updated in one place when a repository moves.

The foundation for peer-to-peer model sharing

These new fowarding proxy's is a foundation for maintaining your own personal objects while simultaneously sharing them with others. You may run your own MagmaSession in the same image as your MagmaServerConsole and the server will see you as just another client.

Exceptional circumstances

If an object is de-referenced from the main root, it will continue to be accessible from its ForwardingProxy's as long as the file is not compressed with MagmaCompressor. After that time, however, it will no longer be available and a MagmaInvalidOid will be signaled.