Changes between Initial Version and Version 1 of NativeGateway


Ignore:
Timestamp:
Sep 24, 2010, 10:57:29 AM (14 years ago)
Author:
zach
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • NativeGateway

    v1 v1  
     1This is the developer page for the SENSEI C++ Gateway implementation.
     2
     3Code: [https://ncit-cluster.grid.pub.ro/trac/Sensei-WP5/browser/gateway /gateway] in the SVN.
     4
     5Specification: [https://ncit-cluster.grid.pub.ro/trac/Sensei-WP5/browser/docs/WSAN_Specification_v0.2.doc WSAN Island Specification v0.2]
     6
     7== What is the gateway ==
     8
     9The SENSEI Gateway is a resource proxy entity, which exposes resources from 6LoWPAN WSAN Islands, and resources about the gateway itself, as SENSEI Resources via HTTP. The Gateway is meant to be scalable and lightweight for use on embedded access Linux point platforms, while at the same time extensible through a Plug-in design.
     10
     11== Requirements ==
     12
     13 * Linux
     14 * g++, make
     15 * [http://www.alhem.net/Sockets/ Sockets C++ library] (Also included in lib/Sockets-2.3.7; make; make install)
     16 * IPv6 support (for local UDP/IPv6 communications)
     17 * libxml2 (not yet in use)
     18 * openssl, openssl-dev (not in use yet)
     19
     20== Project Organization ==
     21
     22 * [https://ncit-cluster.grid.pub.ro/trac/Sensei-WP5/browser/gateway/bin /bin] sensei-gateway executable
     23 * [https://ncit-cluster.grid.pub.ro/trac/Sensei-WP5/browser/gateway/src /src] Gateway Core and Plug-in code   
     24 * [https://ncit-cluster.grid.pub.ro/trac/Sensei-WP5/browser/gateway/xml /xml] Location of resource descriptions used by the gateway
     25 * [https://ncit-cluster.grid.pub.ro/trac/Sensei-WP5/browser/gateway/lib /lib] Sockets++ library
     26 * [https://ncit-cluster.grid.pub.ro/trac/Sensei-WP5/browser/gateway/config /config] Configuration files (unused)
     27 * [https://ncit-cluster.grid.pub.ro/trac/Sensei-WP5/browser/gateway/log /log] Log files (unused)                               
     28
     29== How to build it ==
     30
     31The top-level Makefile will build everything with the following, which places the executable in ./bin. Note that the executable must be run from the root of the project as shown below.
     32
     33{{{
     34make
     35./bin/sensei-executable
     36}}}
     37
     38To clean everything do
     39
     40{{{
     41make clean
     42}}}
     43
     44To build the Sockets++ library
     45
     46{{{
     47cd ./lib/Sockets-2.3.6
     48make
     49sudo make install
     50}}}
     51
     52
     53== How to use it ==
     54
     55See the [wiki:GatewayUser Gateway User Guide].
     56
     57== Features ==
     58
     59The following features are currently part of the Gateway development version as of r517.
     60
     61=== Current ===
     62
     63 * Gateway: HTTP server with configurable port
     64 * Gateway: RAI support (GET, POST, PUT, DELETE on registered URLs)
     65 * Gateway: Resource directory RPI publication support
     66 * Sensei Plugin: BinaryWS v0.8
     67 * Sensei Plugin: eRPI support of Document-Link file:// type
     68 * Sensei Plugin: file:// resource descriptions read from /xml and DOCTYPE ENTITY block added
     69 * Sensei Plugin: Automatic node and resource management (unlimited number)
     70 * Sensei Plugin: Built-in statistics (/stats) and resource description (/rd) resources
     71
     72=== Planned ===
     73
     74 * Gateway: Support for TLS
     75 * Gateway: Support for Sensei AAA
     76 * Gateway: Logging to a file
     77 * Gateway: RD RPI delete, update and refresh support
     78 * Sensei Plugin: Caching support for resources.
     79 * Sensei Plugin: Support for eRPI Document-Link URLs containing http:// in addition to file://
     80 * Sensei Plugin: BinaryWS retransmission support
     81 * Sensei Plugin: libEXI integration
     82 * Management Plugin
     83 * Code Update Plugin
     84
     85== Plug-in design and how to make a new plug-in ==
     86
     87The gateway uses a modular plug-in design based on the Plugin class and managed by the PluginHandler class. Each Plugin uses the Sockets++ Thread class to automatically run as an independent thread. To create a new Plugin simply copy the /src/plugin-skeleton directory to your own /src/plugin-xxx directory and add includes to the /src Makefile.
     88
     89
     90