This is a forward of a previous mail from Zenja Solaja for archiving purposes. Emmanuel ----- Original Message ----- From: "Zenja Solaja" <solaja@xxxxxxxxxx> To: <emmanuel.jacobs@xxxxxxxxxxxx>; "Jean Schwerer" <j-schwerer@xxxxxxx>; "Peter Morensen" <apm@xxxxxxxxxxxxx> Sent: Friday, September 07, 2001 1:16 AM Subject: NetServer design (open-beos) > Hi all. Hopefully, we're actively reading, researching and preparing for > the NetServer rewrite. I'm still waiting for my "Design and Implementation > of FreeBSD4.4" book to arrive which should be the bible on designing a > network process. Anyway, we dont want to spend forever reading, so I think > we should start debating over an architecture. Hopefully, by Oct 1st we'd > have settled on an architecture and start coding. > > To get things rolling, I've prepared a simple black-box type use case > diagram which should be a starting point of our design (see attached jpeg, > if you wish I'll forward the Gobe Productive document used to create this > jpeg). From the diagram you can see the initial actors. We'll start from > here and start adding to the diagram. > > From the black-box simplistic point of view, what service does the netserver > do? > > - once initialised, it is usually blocked waiting for an event to awaken it. > - a user process can awaken the server with a CONNECTION_REQUEST message > - a user process can send a TRANSMIT message to the server > - a user process can inform the server that it wants to RECEIVE messages > - a user process can send a DISCONNECT message to the server > - the kernel/driver can awaken the server with a incoming data message > (READ) > - the netserver sends the kernel/driver a message (a stream) (WRITE) > > > Internally, what does the netserver do? > > - it buffers data streams received from user processes > - it shuffles the data stream and appends data (in accordance to TCP/IP > specs) > - it forwards the new data stream to a device driver > > - it buffers data streams received from the device driver > - it determines who is the receipient of the data (user process, netserver > process) > - it strips and reshuffles the data (according to TCP/IP specs) > - it forwards the stripped data to a user process or a netserver process. > > > What are the initial requirements? > > - the netserver should be able to serve an arbitrary number of user > processes > - the netserver should be able to link to a set number of network cards > - the netserver should have selectable shuffling algorithms (eg. IPv4, IPv6, > TCP, AppleTalk etc) > > Thats basically it. Lets see if I've missed anything and start modifying the > use-case diagrams. > > <<NetServer.jpg>> > > > > > > > ---------------------- > CONFIDENTIALITY NOTICE > ---------------------- > This email is intended only to be read or used by the addressee. > The information contained in this e-mail message may be confidential > information. If you are not the intended recipient, any use, interference > with, distribution, disclosure or copying of this material is unauthorised > and prohibited. Confidentiality attached to this communication is not waived > or lost by reason of the mistaken delivery to you. > > If you have received this message in error, please delete it and notify us > by return e-mail or telephone Aristocrat Technologies Australia Pty Limited > on +61 2 9413 6300. > > -- Binary/unsupported file stripped by Listar -- -- Type: image/jpeg -- File: NetServer.jpg