Comanche


Main Entry: Co·man·che
Pronunciation: k&-'man-chE
Function: noun
Inflected Form(s): plural Comanche or Comanches
Etymology: American Spanish, from Southern Paiute kimmanci[ng]wi Shoshones, strangers
Date: 1806
1 : a member of an American Indian people ranging from Wyoming and Nebraska south into New Mexico and northwestern Texas
2 : the Uto-Aztecan language of the Comanche people
3 : a new and improved PWS in Squeak


Investigator: Bolot Kerimbaev

Comanche is a new web server platform for Squeak. It utilizes a flexible pluggable framework for ease of reuse and rapid application development.

Basic functionality is provided in the core classes. Value added services are also included in the package (currently in beta 2).

An application unit, a squeaklet/servlet, is a module, which in turn may contain childred modules. Thus, an application is an assembly of modules that work together to provide the desired functionality.

Modules included with the standard Comanche release:

  • MultipartPostModule
  • FileServerModule
  • DomainFilterModule
  • PwsModule (compatibility box for PWS, the web server in the current Squeak release)
  • ActiveSqueakModule

    Note: Swiki for Comanche is a separate package.


    Developer Documentation

    Layers

    Module HttpConnectionQueue

    HttpConnectionQueue (or an analog) manages incoming connections, and sends them to the Module for processing. Since there can be multiple simultaneous connections, the root module should be thread-safe (other modules do not have to be thread safe if some locking mechanism is implemented).

    HttpRequest HttpStream HTTPSocket

    HttpStream is an abstraction of the underlying HTTPSocket. Also, it maps into the low level socket representation on UNIX (but is not currently supported by Squeak). HttpRequest provides an additional layer of abstraction.

    Scenario

  • Comanche starts an HttpConnectionQueue processing loop.
  • Upon an incoming connection, HttpConnectionQueue creates a socket and spawns a Process to process the connection. The root module is started with module startOnSocket: socket.
  • An HttpRequest is created from the socket: First, an HttpStream is built on the socket, then the HttpRequest is created from the stream. Module starts processing the request by module process: request.
  • Module performs some processing: self processBeforeModules: request.
  • The processing methods return a request (possibly modified), thus the next phase uses the return value of the previous call.
  • Module steps through its children, piping the result of one's processing on to the next. This pipe is short-curcuited if one of the modules indicates that the processing is completed.
  • Module performs some processing after all children (unless request is done): self processAfterModules: request.
  • Module returns the last returned request.


    Back to the top | To the College of Computing
    EduTech Institute | GVU Center
    Squeak Swiki