NAME

OurNet::BBS::Tutorial - Introduction to the OurNet-BBS Architecture

SYNOPSIS

Below are diagrams of typical scenarios that employs different OurNet::BBS components. In each diagrams, text in [square brackets] denotes a program, {curly brackets} means a physical storage, comments are in (parentheses), and blocks with borders like +---+ indicates a class of objects.

Using OurNet to contact remote MELIX BBS

This diagram explains how the OurNet backend may be used to contact a remote server running bbscomd, the OurNet Server.

			 (backend)
 {Shared Memory}--. +---------------------+	 [bbscomd]
 {Hard Disk Data}-+-|OurNet::BBS::MELIX::*|           |
		    +---------+-----------+   +--------------+
			      +->(daemonize)->|OurNet::Server|
					      +--------------+
 Server-Side			                     | (xxx.yyy.zzz.www)
 ~~~(Internet)~~~~~~~~~~~~~~~~~~~~~~~~~~~~<<<<<OurNet Protocol>>>>>~~~~~~
 Client-Side		    (backend)	             |
		   +----------------------+  +--------------+
		   |OurNet::BBS::OurNet::*|--|OurNet::Client|
		   +----------------------+  +--------------+
			        |
	   OurNet::BBS->new({bbsroot=>xxx.yyy.zzz.www})
		   +--------------------+
        [ebx]------|OurNet::BBSApp::Sync|
		   +--------------------+

Using BBSAgent to contact remote BBS Daemon

This diagram explains how the BBSAgent backend may be used to contact a remote server running bbsd, a regular BBS Daemon of Melix, Maple, Firebird, or Cola systems.

			[BBS Daemon]-+-{Shared Memory}
 Server-Side		      |      `-{Hard Disk Data}
 ~~~(Internet)~~~~~<<<<<Telnet Protocol>>>>>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Client-Side		      |
		     +----------------+                  (include)
		     |OurNet::BBSAgent|<-{TEMPLATE.bbs}--{*/*.inc}
		     +----------------+  (=procedures)
		              |
		+------------------------+
		|OurNet::BBS::BBSAgent::*|(backend)
		+------------------------+
		              |
	    OurNet::BBS->new({bbsroot=>'TEMPLATE'})
		   +--------------------+
        [ebx]------|OurNet::BBSApp::Sync|
		   +--------------------+

The OurNet BBS Component Object Model

This diagrams explains the has-a relationships between all OurNet::BBS::* objects. The first row in each box represents how to access it from the upper-level tied object.

[OurNet::BBS::BACKEND::BBS]->new($bbsroot, @args)...
	  |                 
	  |-------------|--------|--------------|-----------.
    +----------+ +----------+ +---------+ +------------+ +---------+
    | {boards} | | {groups} | | {users} | | {sessions} | | {files} |
    |BoardGroup| |GroupGroup| |UserGroup| |SessionGroup| |FileGroup|
    +----------+ +----------+ +---------+ +------------+ +---------+
         |        |   |            |              |           |
      +-----+     |+-----+        +-----------+ +-------+ +-----------+
      |{STR}|<----'|{STR}|<--.    |{STR}/[NUM]| | {STR} | |   {STR}   |
      |Board|<-----|Group|---'    |   User    | |Session| |ScalarFile*|
      +-----+      +-----+        +-----------+ +-------+ +-----------+
        ||`--------.		         |`----------.
        |`-------. `------------.       `---------. `------------.
+------------+ +------------+ +-----------+ +------------+ +-----------+
| {articles} | | {archives} | |  {STR}    | | {mailbox}  | |   {STR}   |
|ArticleGroup| |ArticleGroup| |ScalarFile*| |ArticleGroup| |ScalarFile*|
+------------+ +------------+ +-----------+ +------------+ +-----------+
      |              |`----------.
+-----------+ +-----------+ +------------+     
|{STR}/[NUM]| |{STR}/[NUM]| |{STR}/[NUM] |<--.
|  Article  | |  Article  | |ArticleGroup|---'
+-----------+ +-----------+ +------------+

Notes:

  • A Group or GroupGroup object may contain any number of Group and/or Board objects. Similarily, an ArticleGroup object may contain any number of ArticleGroup (i.e. an archive directory) and/or Article objects.

  • ScalarFile refers to the class OurNet::ScalarFile, not OurNet::BBS::BACKEND::ScalarFile. All other classes are to be preceded with OurNet::BBS::BACKEND.

  • The STR means string hash index, NUM means numeric array index, accessible using curly and square brackets, respectively.

AUTHORS

Autrijus Tang <autrijus@autrijus.org>

COPYRIGHT

Copyright 2001-2002 by Autrijus Tang <autrijus@autrijus.org>.

This document is open document; you can redistribute it and/or modify it under the Open Content License.

See http://opencontent.org/opl.shtml