diff options
author | neodarz <neodarz@neodarz.net> | 2018-08-11 20:21:34 +0200 |
---|---|---|
committer | neodarz <neodarz@neodarz.net> | 2018-08-11 20:21:34 +0200 |
commit | 0ea5fc66924303d1bf73ba283a383e2aadee02f2 (patch) | |
tree | 2568e71a7ccc44ec23b8bb3f0ff97fb6bf2ed709 /docs/nelnet.php | |
download | nevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.tar.xz nevrax-website-self-hostable-0ea5fc66924303d1bf73ba283a383e2aadee02f2.zip |
Initial commit
Diffstat (limited to '')
-rw-r--r-- | docs/nelnet.php3 | 530 |
1 files changed, 530 insertions, 0 deletions
diff --git a/docs/nelnet.php3 b/docs/nelnet.php3 new file mode 100644 index 00000000..7aab8bb2 --- /dev/null +++ b/docs/nelnet.php3 @@ -0,0 +1,530 @@ +<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> +<HTML> +<HEAD> + <TITLE>Nevrax.org : docs</TITLE> + <META name="keywords" content="freesoftware,nel,newt,snowballs,richard stallman,GNU,Multi-User Online World"> + <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css"> +</HEAD> +<BODY MARGINHEIGHT="0" MARGINWIDTH="0"> + +<!-- uplinks --> +<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> + <TR> + <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD> + <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD> + <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD> + <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle> <A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A> </TD> + <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle> <A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A> </TD> + </TR> +</TABLE> + +<!-- banner Nevrax --> +<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%> + <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax"></A></TD></TR> +</TABLE> + +<!-- main table --> +<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%> + <TR> + <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD> + <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT=""> + + <!------ Begin Box ------> + <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black> + <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF> + <TABLE cellspacing=0 cellpadding=1 border=0> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr> +<!-- <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>--> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-free.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/free/" TITLE="Free Software">Free software</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/download/" TITLE="Rubrique download"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/download/" TITLE="Download">Download</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/suggest/" TITLE="Rubrique suggest"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/suggest/" TITLE="FS Suggest">FS Suggest</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/faq/" TITLE="Rubrique suggest"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/faq/" TITLE="FAQ">FAQ</a></td></tr> + </TABLE> + </TD></TR></TABLE></TD></TR></TABLE> + <!------ End Box ------> + + + </TD> + <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD> + <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT=""> + +<!-- title --> +<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td> +<A HREF="http://www.nevrax.org/docs"><img src="http://www.nevrax.org/inc/img/t_docs.gif" ALT="docs" HEIGHT=20 BORDER=0></A> +</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT=""> +</td></tr></table> + +<!-- End header --> + + +<!-- Nel Network Library --> +<table width=100%><tr><td align=left><b>Nel Network Library</b></td><td align=right><b></b></td></TR></TABLE> +<H1>Introduction</H1> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">This documents +presents 'NeL Net', the NeL network library.</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">NeL is a toolkit +for the development of massively online universes. It provides the +base technologies and a set of development methodologies for the +development of both client and server code.</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The NeL Net +comprises code libraries for inter-server communication and +server-client communication. It also provides implementations of the +service executables required by the higher level layers of the code +libraries.</P> +<H2>Mission Statement</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The first objective +of NeL Net is to provide a complete data transfer system that +abstracts system specific code and provides mechanisms for complete +control of bandwidth usage by the application code.</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">NeL Net has a +further objective of providing a complete toolkit, comprising further +layers of library code and core service implementations, for the +development of performance critical distributed program systems for +massively multi user universe servers. +</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The current feature +requirement list for NeL Net corresponds to the application +architecture for Nevrax' first product. This notably includes the +requirement for a centralised login validation system at a separate +geographical location from the universe servers.</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Nevrax is currently +developing a TCP/IP implementation of the low level network layers. A +UDP implementation may be developed at a later date.</P> +<H2>Target Platforms</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The Nevrax team +expect to run GNU/Linux servers for their first product. As such, GNU/Linux +is the primary target operating system.</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">NeL Net is +currently tested on GNU/Linux and Microsoft Windows NT platforms.</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><BR> +</P> +<H1>Statement of requirements</H1> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The Network library +addresses the following problems:</P> +<H2>Client -> Server communication</H2> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The product + code (also referred to as app code) on the Client needs to be able + to pass blocks of information to the network layer for communication + to the server. The network code is responsible for ensuring that + the blocks of data arrive complete server-side. In the majority of + cases the blocks of data from the client will be significantly + smaller than the maximum packet size, which means that the network + code should not need to split data blocks across network packets.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">In order for + the app code to control the flow of data to the server, the network + code should buffer sends until either an app-definable time has + elapsed or an app-definable packet size has been reached.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Note: The + information sent from the client to the server will generally be + small in size, typically representing player actions such as + movement. + </P> +</UL> +<H2>Server -> Client communication</H2> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The app code + on the Server needs to be able to pass blocks of information to the + network layer for communication to the client. This problem is + exactly the same as the Client -> Server problem, described + above.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The app code + is responsible for limiting the amount of data sent to each player + each second by prioritising the information to be dispatched. In + order to achieve this, the network code should buffer sends until + the app code explicitly requests a buffer flush. The network API + should provide the app code with the means of tracking the growth of + the output buffer. + </P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Note: The + information sent from the server to the client will often be large + in size, as the server must inform the player of changes of state + and position of all other characters and objects in the player's + vicinity. + </P> +</UL> +<H2>Inter-Process communication across servers</H2> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The different + processes that make up the game need to be able to send messages to + each other to request or exchange information.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">There needs to + be a transparent routing mechanism that locates the services to + which messages are addressed and dispatches them.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">There needs to + be a standard framework that handles the queue of incoming messages + and manages the dispatch of messages to different modules within a + process. (e.g. A process that manages a set of AI controlled + characters may have one module that handles incoming environment + information, another that treats other processes' information + requests, and so on).</P> +</UL> +<H2>On the fly backup management</H2> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">There needs to + be a reliable centralised system for backing up and retrieving world + data.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The system + must be capable of treating large volumes of data as 'transactions'. + This means that if a server goes down - when it comes back up + transactions will never be 'half complete'. Any transactions that + had been begun but not finished must be automatically undone.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The backup + system must be capable of managing a 'backup schedule' under which + it sends backup requests to scheduled processes and treats the + return data.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The backup + system must be capable of handling spontaneous backups from + different processes (particularly the player management processes + who are capable of backing up players at any time).</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The backup + system will be called upon to retrieve player data whenever a player + logs in. This operation must be reasonably fast.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The backup + system will be called upon to supply data to each system at system + initialisation time. The backup system should supply such systems + with their complete data sets.</P> +</UL> +<H2>General requirements</H2> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The app code + is responsible for network traffic and must be capable of much lower + level access to the Network library than the above requirements + suggest.</P> +</UL> +<H2>Login/ logout management</H2> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The product + that Nevrax is developing handles multiple instances of the game + world running on different server sets (known as 'Shards') with a + single centralised login manager.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The login + manager must:</P> + <UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Receive login + requests from client machines</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Validate + login requests with the account management system</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Provide the + client with the active shard list</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Negotiate a + connection with the shard of the client's choice</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Dispatch the + shard's IP address and a unique login key to the client</P> + </UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The login + manager must refuse attempts to login multiple times under the same + user account. This implies that the login manager must be warned + when players log out.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The login + system should include client and shard modules that provide a high + level interface to the login manager, encapsulating communication.</P> +</UL> +<H2>Account management</H2> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">No choice has + been made as to what solution to take to account management at NeL.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">It is + sufficient to know that we need a standard API for the account + management system capable of validating logins.</P> +</UL> +<H1>Technical design details</H1> +<H2>Design outline</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The NeL network +library provides a single solution which caters for all of the Server +-> Client, Client -> Server and Inter-Process communication +requirements.</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">This solution is +structured as a number of layers that are stacked on top of each +other. The API gives the app programmers direct access to all of the +layers.</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">There is a program +skeleton for the programs within a shard who are capable of +communicating with each other via layer 5 messages. Programs of this +form are referred to as 'Services'.</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The backup system +is a standalone service (a service being a process which exposes a +standard message interface) which will encapsulate a 3rd party +database.</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The login manager +and account manager are standalone programs at an isolated site.</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">In a nutshell the +network support layers include:</P> +<TABLE WIDTH=568 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=1 CELLSPACING=0> + <COL WIDTH=112> + <COL WIDTH=450> + <TR VALIGN=TOP> + <TD WIDTH=112> + <P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Layer 4</P> + <P STYLE="margin-top: 0.11cm">(Top Layer)</P> + </TD> + <TD WIDTH=450> + <P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Inter-Service + message addressing layer</P> + <P STYLE="margin-top: 0.11cm">Handles routing of messages to + services, encapsulating connection to naming service and handling + of lost connections.</P> + </TD> + </TR> + <TR VALIGN=TOP> + <TD WIDTH=112> + <P STYLE="margin-top: 0.11cm">Layer 3</P> + </TD> + <TD WIDTH=450> + <P STYLE="margin-top: 0.11cm">Message management layer<BR>(Handling + of asynchronous message passing, and callbacks)</P> + </TD> + </TR> + <TR VALIGN=TOP> + <TD WIDTH=112> + <P STYLE="margin-top: 0.11cm">Layer 2</P> + </TD> + <TD WIDTH=450> + <P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Serialised data + management layer</P> + <P STYLE="margin-top: 0.11cm">Supports the standard serial() + mechanism provided by NeL for handling data streams.</P> + </TD> + </TR> + <TR VALIGN=TOP> + <TD WIDTH=112> + <P STYLE="margin-top: 0.11cm">Layer 1</P> + </TD> + <TD WIDTH=450> + <P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Data block + management layer<BR>(buffering and structuring of data with + generic serialization system)</P> + <P STYLE="margin-top: 0.11cm">Also provides multi-threading + listening system for services</P> + </TD> + </TR> + <TR VALIGN=TOP> + <TD WIDTH=112> + <P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Layer 0</P> + <P STYLE="margin-top: 0.11cm">(Bottom Layer)</P> + </TD> + <TD WIDTH=450> + <P STYLE="margin-top: 0.11cm">Data transfer layer<BR>Abstraction + of the network API and links (PC may be across a network, or local + messaging)</P> + </TD> + </TR> +</TABLE> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><BR> +</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><BR> +</P> +<H2>Layer 0</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Layer 0 includes +the following classes:</P> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">CSock : + Base interface and behavior definition for hierarchical descendents</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">CTcpSock : + Implementation of a socket class for the TCP/IP protocol</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">CUdpSock : + Implementation of a socket class for the UDP protocol</P> +</UL> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><FONT COLOR="#0000ff">**** +Document under construction</FONT></P> +<H2>Layer 1</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Layer 1 includes +the following classes:</P> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">CBufNetBase : + Buffer functionality common to client and server</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">CBufClient : + Implements client-specific buffer functionality + </P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">CBufServer : + Implements server-specific buffer functionality</P> +</UL> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><FONT COLOR="#0000ff">**** +Document under construction</FONT></P> +<H2>Layer 2</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Layer 2 includes +the following classes:</P> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">CStreamNetBase : + Stream functionality common to client and server</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">CStreamClient : + Client-specific stream functionality</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">CStreamServer : + Server-specific stream functionality</P> +</UL> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><FONT COLOR="#0000ff">**** +Document under construction</FONT></P> +<H2>Layer 3</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Layer 3 includes +the following classes:</P> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">CCallbackNetBase : + Functionality common to client and server</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">CCallbackClient : + Client-specific functionality</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">CCallbackServer : + Server-specific functionality</P> +</UL> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><FONT COLOR="#0000ff">**** +Document under construction</FONT></P> +<H2>Layer 4</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><FONT COLOR="#0000ff">**** +Document under construction</FONT></P> +<H2>System Services</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The following +system services are provided as part of NeL. For each of these +services there exists an API class that may be instantiated in any +app-specific service in order to encapsulate the system service's +functionality.</P> +<H3>The Naming Service</H3> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">A standalone +program used by all services to reference each other.</P> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">All services + connect to the naming service when they are initialised. They + inform the naming service of their name and whereabouts.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The naming + service is capable of informing any service of the whereabouts of + any other service.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">When more than + one instance of the same service connect to the naming service we + anticipate the possibility of the naming service managing simple + load balancing by distributing connection requests to the given + service across the available instances.</P> +</UL> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><I><B>API class: +</B>CNamingClient</I></P> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Generates + dynamic port numbers</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Registers the + application service's name with the naming service.</P> +</UL> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Retrieves the + IP address and port number for a named service.</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><I> See + technical documentation for details</I></P> +</UL> +<H3>The Time Service</H3> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Provides standard +universal time (in milliseconds) for the services within a shard and +also for remote clients across the internet.</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><I><B>API class: +</B>CUniTime - See technical documentation for details</I></P> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Synchronises + the local machine time with the universal time</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Provides + access to the universal time</P> +</UL> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><I>See + technical documentation for details</I></P> +</UL> +<H3>The Log Service</H3> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Provides a +centralised information logging system.</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><I><B>API class: +</B>CNetDisplayer</I></P> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Allows any log + message to be directed to the log service (instead of or as well as + the screen, a disk log file, etc)</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">This is a + displayer in the logging system (see misc library for details)</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><I>See + technical documentation for more details</I></P> +</UL> +<H2>The Service Skeleton</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The network library +presents a generic service skeleton, which includes the base +functions of a distributed service. At initialisation time it +performs the following:</P> +<UL> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Reads and + interprets configuration file and command line parameters</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Redirects the + system signals to NeL handler routines</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Connects to + the Log Service</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Connects to + the Time Service and synchronises clock with universal time</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Creates and + registers callbacks for network layer 3</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Sets up the + service's 'listen' socket</P> + <LI><P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Registers + itself with the Naming Service</P> +</UL> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The skeleton also +handles exceptions and housekeeping when the program exits (whether +cleanly or not)</P> +<H2>Login system</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><FONT COLOR="#0000ff">**** +Document under construction</FONT></P> +<H3>Login manager(stand alone)</H3> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><FONT COLOR="#0000ff">**** +Document under construction</FONT></P> +<H3>Login client API</H3> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><FONT COLOR="#0000ff">**** +Document under construction</FONT></P> +<H3>Login shard API</H3> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><FONT COLOR="#0000ff">**** +Document under construction</FONT></P> +<H2>Account manager (stand alone)</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">Stand alone program +that handles the list of users permitted to connect to shards managed +by a given Login Manager. +</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">NeL provides a +skeleton program that includes the communication protocols for the +Login manager.</P> +<H2>Backup Service</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><FONT COLOR="#0000ff">**** +Document under construction</FONT></P> +<H2>Administration</H2> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">NeL provides the +base mechanisms for administering a NeL shard. Two basic services +are provided:</P> +<P STYLE="margin-top: 0.21cm; margin-bottom: 0cm">The <B>Admin +Service </B>(1 per shard)</P> +<UL> + <LI><P STYLE="margin-bottom: 0cm">Provides an entry point for + cluster administration.</P> + <LI><P STYLE="margin-bottom: 0cm">Provides access to logging + information and mechanisms for starting or restarting services</P> +</UL> +<P STYLE="margin-top: 0.21cm; margin-bottom: 0cm">The <B>Admin +Executor</B> (1 per server)</P> +<UL> + <LI><P STYLE="margin-bottom: 0cm">This is the relay for the Admin + Service.</P> + <LI><P STYLE="margin-bottom: 0cm">Fetches statistics on the local + machine and relays them to the Admin Service</P> + <LI><P STYLE="margin-bottom: 0cm">Launches and controls the services + running on the local machine.</P> +</UL> +<H1>Future plans</H1> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm">The purely network +library is typically self-contained, and not much subject to +modification, unless one wants to change the entire paradigm around +which the platform runs. Addition of a specific and non-standard +network or network API would be the only reason one would change +layer 1. +</P> +<P STYLE="margin-top: 0.11cm; margin-bottom: 0cm"><FONT COLOR="#0000ff">**** +Document under construction</FONT></P> + +<!-- footer --> +<BR><FONT Size=+5> </FONT> +</TD> +<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD> +</TR> +</TABLE> + +</BODY> +</HTML>
\ No newline at end of file |