Skip to content

aplteam/RumbaLean

Repository files navigation

RumbaLean

Overview

This is a fork of Carlisle's original Rumba project.

Rumba (and therefore RumbaLean) are an almost full implementation of the HTTP 1.1 protocol: only SSE (Server Side Events) are missing.

Requirements

RumbaLean needs at least Dyalog APL 18.2 Unicode.

Why this fork

These are the goals of this fork:

  • Allow the path to the Conga DLLs being specified as a parameter (optional)
  • Copy the Conga class dynamically from the installation folder of the currently running version of Dyalog
  • Allow the specification of Conga's "rootname" parameter
  • Added function Shutdown that needs to be called in order to restart Conga
  • RumbaLean requires upfront initialisation before it can be used
  • All calls to InitConga are removed from the Rumba functions
  • Avoid all dependencies except the need of the Conga DLLs
  • Allow trapping crashes on the exit functions (OnStart, OnRequest, ...) with an alternative mechanism: by default the APLTree class HandleError is used for this
  • Uses the Conga class rather than the namespace DRC
  • Remove namespaces that are not required for Rumba's core functionality: Doc, DemoApp and WebAdmin
  • Remove functions from the Admin namespace that are not needed for Rumba's core functionality: BuildPackage, BuildRelease, CopyFolder, CopyProject, LoadHelp, StartHelp and GetDrudgeReport

Notes:

  • Main goal is to keep Rumba's core functionality in line with the original project
  • The test cases are still part of the project
  • The help is available in a sub folder - execute RumbaHelp/ViewHelp.exe
  • In order to build a new version load Make\Make.dws
  • RumbaLean has its own version number

Syntactical differences

There are two main differences between the original Rumba project and RumbaLean:

  • The way the Conga DLLs are located. RumbaLean uses the ones of the currently running version of Dyalog. If you don't want that you have to tell RumbaLean where to look for them as the first optional right argument to InitConga.

  • You may specify an optional "rootname" (Conga). This is important if you wish to use Rumba in the same workspace for two different applications. Each application should "see" only its own Conga objects, and for that you must specify "rootname" for at least one of them so that they use different ones. Default is "DEFAULT".

Server

Call the function Core.Start. You may provide the folder that carries the Conga DLLs as the right argument.

Client

  • Call InitConga once with a proper right argument in order to initialize.

Build process

Most of the changes are actually performed by the "Make" workspace. Any changes made to the code are marked up with comments like ⍝ Kai. The reason for this is that this makes a comparison between the original Rumba project and RumbaLean easier.

The drawback of this approach is that the resulting "RumbaLean" workspace looks very different from the project workspace.

Keeping RumbaLean in sync with Rumba

There is a separate document HowToSyncWithRumba.md available that addresses this issue.

About

A fork of Rumba, an HTTP 1.1 server (and client) for Dyalog APL

Resources

License

Stars

Watchers

Forks

Contributors