OurNet::BBS::Tutorial - Introduction to the OurNet-BBS Architecture
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.
[square brackets]
{curly brackets}
(parentheses)
+---+
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| +--------------------+
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| +--------------------+
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.
tie
[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.
Autrijus Tang <autrijus@autrijus.org>
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
To install OurNet::BBS, copy and paste the appropriate command in to your terminal.
cpanm
cpanm OurNet::BBS
CPAN shell
perl -MCPAN -e shell install OurNet::BBS
For more information on module installation, please visit the detailed CPAN module installation guide.