MACS -- the base MACS class


The MACS object is a purse. Other objects use it to carry around all the useful stuff. It is also an oracle, because it frontends MACS::CClient to expose configuration information. Since this is the logical starting point for documenting the big picture of the MACS core object hierarchy, here is a nose-bleed view:

  MACS - this class
  MACS::CClient - Perl frontend to C client library
  MACS::GUA - Grand Unified User Agent (web UI support class.) TODO:
              this class actually does basically what MACS does. Remove
  MACS::Service - common svc functionality
    MACS::Foreman - spawns and manages workers
      MACS::Worker - does work, though lately it mostly just takes union
                     breaks and gossips by the water fountain
    MACS::Service::Async - asynchronous version of MACS::Service
      MACS::Factory - listens for client requests, hands to Foreman
    MACS::ATS - authorization service
    MACS::AUS - authentication service
    MACS::RPS - resource profile service
    MACS::LMC - login method services' base class
      MACS::LMC::Null - default (db) login method
      MACS::LMC::LDAP - ldap login method
      MACS::LMC::Yahoo - login method
      MACS::LMC::ESPN - login method
    MACS::AMC - authorization method services' base class
      MACS::AMC::Null - default (db) authz method
      MACS::AMC::Home - home directory authz method
    MACS::PMC - profile method services' base class
      MACS::PMC::Null - default (db) profile method
      MACS::PMC::LDAP - ldap profile method
  MACS::Util - utilities hang off the MACS object
    MACS::Comm - handles communications
      MACS::Comm::Mux - handles async communications
    MACS::DBI - database access/manipulation
    MACS::Dispatch - route messages throughout core framework
      MACS::Dispatch::Async - dispatcher for use with Comm::Async
    MACS::Log - base class for logging
      MACS::Log::File - logs to a file
    MACS::Request - liaison between different pieces of the core
    MACS::Session - Manage shared memory (session information) for


Holds an instance of MACS::CClient. In the servers, this object is used exclusively for its configuration data. See the cfg and cfgs methods below for a painless way access that.

Holds an instance of MACS::Comm

Holds an instance of MACS::Log

Holds an instance of MACS::Session

Holds an instance of MACS::DBI

TODO: what's this used for, Blake?

Holds an instance of MACS::Dispatch

Holds an instance of MACS::Service

Holds an instance of MACS::Request

Holds an instance of MACS::Factory, MACS::GUA, or MACS::Foreman, whichever is in charge of this MACS.


initalize the object. if the MACS_CF environment variable is defined, it is used as the full path to the config file. Otherwise the default from the MACS::CClient class is used.

Get a config item via the C client lib. Call it like cfg("keya","keyb",...)

Get a list of config items via the C client lib. Call it like cfgs("keya","keyb",...)