#Drivers
A driver in flok is for one specific platform. The driver lives in the ./app/drivers/$PLATFORM folder.
This folder is required to have a config.yml and a Rakefile. Everything else that goes in this folder is up to the implementor.
Driver configuration file. Contains the following keys:
$ENVIRONMENT- Can either beRELEASEorDEBUGmods- A list of module names this driver supports. See Modules for details.debug_attach- See Debug server for information
DEBUG:
debug_attach: socket_io
mods:
ui
debug
RELEASE:
mods:
uiContains the following tasks:
build- A request for this driver to build it's files into the folder$BUILD_PATHspec- Run any unit tests that the implementor deems necessary that do not need the pipe. Given$BUILD_PATH. Should return 0 on success and non-0 on failurepipe- Establish a 2-way pipe on standard io where input goes toif_dispatchandint_dispatchgoes to output.can_build- Should exit -1 if the platform can not be built (or can not be tested) on the current environment. exit 0 otherwise
Every driver must export if_dispatch into the context managing application.js (See Messaging). The driver should then handle if_dispatch and it's implementation should handle messages appropriately so that the messages it receives can be fulfilled as stated in the modules
contract. The driver should also offer some way to call int_dispatch inside the application.js context from the outside world.
Driver tests are chosen by the platform implementor. The only requriements for a driver test are that it be run when rake spec is executed within the ./app/driver/$PLATFORM/ folder. These tests should never do anything that can be tested by only using the driver's pipe interface. Tests that can be done through the pipe interface should be done through the Driver Interface tests (See the section on Interface in Testing.
- Running -
rake spec - Location -
./app/drivers/$PLATFORM/ - Environment
$BUILD_PATH- The same folder the driver was given duringbuild$PWD-./app/drivers/$PLATFORM/
When a driver receives a if_init_view it cannot handle because the view is not something it has been programmed to understand, (typically through a template system), that driver is suggested to show a debug view if
the driver is built with the environmental variable $FLOK_ENV set to DEBUG and the debug module is present. The debug view should have one associated debug controller for all debug views that does the same thing.
The debug view and controller should show something along the lines of:
- The controller name - This is given in
if_init_controller - The current action name - This is given in the
actioneventtofield. - The last event received - You can capture this information in your custom event handler.
- The context information - This is passed in
if_init_controllerand should be accesssible in your view controller viacontext - N Spaces for each attempted attachment of a view controller - When
if_init_viewis called, it has a list of spaces. Use these to dynamically create them. - A list of buttons where each button triggers an event associated with the current action - This is set with
if_debug_assoc(controller_name, "action_events", [..])