Fermilab

SAMGrid
SAMGrid at Work D0 SAM
DZero User CDF User Developer Admin/Shifter Project History Documentation

Overview: The SAM CORBA Infrastructure

In the summer of 2003, with new requirements being introduced by CDF and other experiments beginning to use SAM, the SAM team was granted the opportunity to redesign the interfaces and implementation of the SAM DBServer. As a result of this process, we now have in place a CORBA infrastructure that should help to streamline the development of new methods and interfaces for communication between the various SAM elements.

At the time of this writing (spring 2004), the new infrastructure has not been deployed in production. The components of SAM that are written in c++ (sam_station, sam_client_cpplib, etc) have not been reimplemented using the new concepts (except where necessary for communication with the rewritten dbServer). However, the components of SAM that are based in python (sam_user_pyapi, sam_admin_pyapi, sam_mis_pyapi) are well underway in the process of being reimplemented with the new infrastructure.


Philosophy in a Nutshell:

The driving concepts and philosophies behind the CORBA infrastructure can be summarized as follows:

  1. All interfaces are defined in the package sam_idl.
  2. Data structures and constants should be defined in sam_idl/sam_corba_base as part of the SAM module, available to all clients.


Marshalling and Unmarshalling: What do we mean?

When we in the SAM world speak of marshalling and unmarshalling, we are extending the meaning beyond merely the CORBA marshalling/unmarshalling. The CORBA meaning is:

CORBA marshal:
Convert a CORBA object into a byte stream and send down the wire.
CORBA unmarshal:
Receive a byte stream and convert it into the corresponding CORBA object.

In the SAM world, we prefer to think of the higher-level objects (especially for python applications):

SAM marshal:
Convert a high-level python object into it's CORBA representation for CORBA marshalling.
SAM unmarshal:
Convert a CORBA unmarshalled obect into its high-level python representation

In pictures, it looks something like the following:


      client                client                          server              server
    HighLevelObject     CORBA Object        NETWORK      CORBA Object       HighLevelObject
   ----------------------------------------------------------------------------------------
        HLO          CO=HLO.corbaRepr()  ..bagO'Bytes..      CO                HLO.pyRepr()


                          |-----------------------------------|
                         corba                               corba
                         marshall                          unmarshal

        |============================================================================|
      SAM                                                                           SAM
      marshal                                                                      unmarshal
      

Critical Points in the CORBA Infrastructure for Python

Most SAM developers will never need to get down and dirty with the CORBA infrastructure, because they'll be able to find an expert (namely, me) to get down and dirty on their behalf. However, for those times when I'm on vacation or not answering my phone, here are the critical points and a corresponding brain dump of related info.



Author: Lauri Loebel Carpenter
Last update by: $Author: lauri $
Updated on: $Date: 2005/04/22 16:06:46 $


Contact SAMGrid
Last modified: 11-May-2005 10:43 CDT
Security, Privacy, Legal | Fermilab Policy on Computing Fermi National Accelerator Laboratory