Blackboard

From ESEwiki

Revision as of 06:46, 1 September 2006; view current revision
←Older revision | Newer revision→
Jump to: navigation, search


The blackboard is where ideas can evolve before being coded in an ESE tool or library.

Distributed Computing

Ideas

The idea behind distributed computing is something very similar to STORABLE. The idea is to have a repository of objects that is available through the network.

The design is asymmetric: a server holds a repository, and clients can connect to the server to change objects in the repository. But that's always the server that performs the real operation upon an object in the repository. Clients can only ask the server.

Of course that's transparent: to a lambda user it looks like he is working on the object itself. A tool (surely esec) will create everything that is needed to glue the client and the server (stubs and so on).

Layout

The layout of the dist blackboard is the following:

ese/blackboard/dist The root of the distributed computing blackboard. It contains the make.sh script that shows the steps that should be performed by esec.
.../dist/src The classes are not here anymore but placed at their definitite place:

ese/src/eiffel/fwk/dist

.../dist/test The classes there are the user point of view of how to do distributed computing
.../dist/test/src The classes there are those really written by the user.
.../dist/test/src/main The classes there are the root classes of three process in the same system:
  • SERVER_DIST is the distributed server
  • CLIENT_SET is a client that modifies some distributed object
  • CLIENT_GET is a client that reads some distributed object
.../dist/test/src/data The classes there are the data classes, i.e. objects that will be shared:
  • TEST_OBJECT is the interface from which glue classes will be generated; note that the glue classes will be generated using the deferred features of that class
  • SERVER_TEST_OBJECT is an implementation of that interface, the real server-side object
.../dist/test/generated_by_hand   The classes there will have to be generated by esec that will glue the server and the client. Note in particular:
  • TEST_OBJECT__STUB which is the client-side object that communicates with the server
  • DIST__ that is used to generated the common internals helper (using SmartEiffel's extract_internals tool and the make creation procedure) and the three executables (using the start__* creation procedures)
  • The three plugins dist__server_dist, dist__client_set and dist__client_get that contain some Cecil descriptions to include (those just help bypass export rules for the creation procedures) --- TODO: the Java plugins
Personal tools