[MERGE] eCAP support, part 1: Loadable modules and ICAP-independent Squid core.

From: Alex Rousskov <rousskov@dont-contact.us>
Date: Fri, 04 Apr 2008 23:53:24 -0600

Hello,

    I am done with the first part of eCAP work and would like to commit
it to Squid3 trunk. The first part includes (a) initial support for
loadable modules and (b) removing ICAP from main Squid sources, replaced
with the adaptation API that does not depend on a specific adaptation
mechanism.

The patch does not contain significant changes to main Squid sources.
Generic adaptation API should minimize significant core changes going
forward. Details are below. For a low-level change log, see the eCAP bzr
branch at https://code.launchpad.net/~rousskov/squid/ecap

Configuration and features:

  Added adaptation_service_set squid.conf option, deprecating
  icap_class. The new option has more accurate documentation and does
  not depend on the adaptation protocol so one can group eCAP and ICAP
  services.
  
  Added adaptation_service_set squid.conf option, deprecating
  icap_access. The new option has more accurate documentation and does
  not depend on the adaptation protocol so one can mix-and-match eCAP
  and ICAP ACL rules.

  Added loadable_modules squid.conf option to specify what shared
  libraries to load dynamically. The support is based on libtool's ltdl
  convenience library and is enabled by default. It can be disabled
  using --disable-loadable-modules. Loadable modules are needed for
  eCAP, but loadable_modules code deals with generic module
  manipulation, independent from eCAP support. Squid does not yet
  communicate with the loaded modules. TODO: support cachemgr
  reporting and reconfiguration of modules.

Internals:

  Squid core no longer knows about ICAP: General message adaptation code
  has been moved from src/ICAP to src/adaptation/. The only connection
  between main Squid code and ICAP is squid.conf parser and a few
  enabling lines in main.cc. USE_ADAPTATION is enabled if ICAP_CLIENT or
  USE_ECAP is enabled. TODO: Make adaptation comments, debug, and error
  messages in main Squid code ICAP-neutral. This has not been done yet
  to reduce VCS conflicts.

  The src/ICAP/ directory now has its own Makefile (so does the new
  src/adaptation). TODO: Should ICAP and eCAP directories be moved
  inside adaptation/?

  The eCAP directory and the --enable-ecap option have been added, but
  they should not be used yet.

  Added an adaptation service group API to support groups of services.
  Current code supports service sets and single-service groups. Sets
  provide a way to group interchangeable services together so that one
  (the "best" available) service is applied to the message. A
  single-service group is an internal feature to allow user to mix
  service and group names in squid.conf ACLs. TODO: support service
  chains (as a service group) and perhaps group of groups?

  Implemented delayed creation of adaptation services. We used to create
  ICAPServiceRep objects when parsing the configuration file.
  Create-as-you-parse is imperfect for several reasons, especially if
  the services are dynamically loaded as is the case with eCAP. We now
  remember the service configuration and then create the actual service
  object _after_ the configuration has been parsed and loadable modules,
  if any, have been loaded.

  The bootstrap.sh script has been updated to generate ltdl library
  using libtoolize and move it to lib/libLtdl (except for the standard
  copyright file). With libtool version 2, the move will be supported by
  libtoolize itself. The lib/libLtdl directory and libtool.m4 file are
  not in VCS.

Thank you,

Alex.
bb:approve

Received on Fri Apr 04 2008 - 23:53:44 MDT

This archive was generated by hypermail 2.2.0 : Wed Apr 30 2008 - 12:00:07 MDT