# Core Modules

The "core modules" are the fundamental part of the Library. The core entity contains hooks for the dynamic modules and provides the major access points for applications issuing requests, for example to access a data object.

WWWLib Include
  This is not really a core module, but an important part as this is the only include file you need to use the Library.
Access Manager
  The access manager is the main entry point for requesting a data object pointed to by a URI. It has a set of methods that allows the application to request different services, for example to get a URI, post a URI, or to search a URI.
Protocol Manager
  The protocol manager is invoked by the access manager in order to access a document not found in memory or in file cache. The manager consists of a set of protocol modules handling the access schemes HTTP, FTP, NNTP, Gopher, WAIS, Telnet, and access to the local file system. The protocol modules are registered dynamically (using static linking) and the User's Guide describes how modules can be registered. Each protocol module is responsible for establishing the connection to the remote server (or the local file-system) and extract information using a specific access method. When data arrives from the network, it is passed on to the format manager.
Format Manager
  The stream format manager takes care of data format conversion requested based on a set of registered format converters and a simple algorithm for selecting the best conversion.
Cache Manager
  The cache manager is used to save data objects once they have been down loaded from the network. The cache uses the hierarchy indicated in the URLs as a way to identify items in the cache but is still under construction and requires a lot of work to be a highly efficient cache manager!
Error Manager
  This module manages an information stack which contains information of all errors occurred during the communication with a remote server or simply information about the current state. Using a stack for this kind of information provides the possibility of nested error messages where each message can be classified and filtered according to its impact on the current request, for example "Fatal", "Non-Fatal", "Warning" etc. The filtering can be used to decide which level of messages will be passed back to the user.
Event Manager
  The event manager is a "session layer" handling which thread should be the active thread. A thread can either be an internal libwww thread or an external thread, for example a Posix thread, and the event manager can itself be either the internal Library manager or an external event manager. Currently the internal event manager uses a select function call to decide which thread should be made the active one, however an external event manager can use another decision model. The event manager is described together with the internal thread model in the section "Libwww Threads", and more modules are described in the section Libwww thread Modules