The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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