Go to the FreeLists Home Page Home Signup Help Login
 



[openbeosnetteam] || [Date Prev] [01-2002 Date Index] [Date Next] || [Thread Prev] [01-2002 Thread Index] [Thread Next]

[openbeosnetteam] Re: Me as well...

  • From: "David Reid" <dreid@xxxxxxxxxxxx>
  • To: <openbeosnetteam@xxxxxxxxxxxxx>
  • Date: Wed, 16 Jan 2002 09:21:58 -0000
> > Well, I hope to actually contribute some code at some point :)  I'm the
> guy
> > who looks after Apache for BeOS (this has led to me being a full member
of
> > the Apache Software Foundation). I've also ported a large number of apps
> > (mainly server related) from various platforms to BeOS.
>
> Thanks for that :)

No problem :)

>
> > I'd like to think that we could get a really cool implementation and
hope
> > that maybe it'll allow moving on from the rather limited functionality
> > available in R5's network kit?! :)
>
> Ok, that's alos what we think :-)
> I have a question for you about this.  I'm used to network related things
> but I was (:-) not a real BeOS programmer so my interest goes in your
> experience of BeOS programming especially on a project like Apache.
> Could you please share with us your view (pros, cons, problems) of the
BeOS
> Network Kit and BeOS Bone thing.

Right well, there is a saying "beware of what you ask for", but as you
asked...  (this may not be pretty)!

Things R5 did well
- multithreading support (with exceptions)

Things R5 did badly
- (fd == pipe) != socket
- strange ways of setting timeouts and so on (non-posix)
- slow
- sockets couldn't be shared across teams
- no shutdown
- used send/recv for read/write on sockets
- didn't provide good documentation about the bsd interface
- no support for exceptions in select (or write in many versions)

Changes Required
- fd == pipe == socket needs to be implemented correctly.  We should be able
to call select on an fd, pipe or socket, set timeouts on pipes and sockets
(don't make sense on fd's do they? ) and so on...  This brings us much
closer to being able to port and run all sorts of cool stuff.  Also it
dramatically simplifies a lot of posix type stuff.
- allow sockets to be shared across teams/processes and allow them to be
inherited after fork
- add support for shutdown
- use write/writev/read/readv for socket operations
- add better support for setsockopt, getsockopt, ioctl and so on to follow
the posix standard.  BONE was much better at this than the network_kit.
- add a netstat command that works (BONE never managed this)
- allow management of interfaces via ifconfig (including wireless)
- don't use so many threads!
- have a select that works (I recently found a nasty bug in R5's select) and
add support for exceptions
- improve performance a LOT, especially under load and concurrent
connections
- make sure all functions are threadsafe

Would be Nice To Haves

- IPv6
- AF_LOCAL support
- poll
- sendfile

<I did warn you!>

Now, that's off the top of my head without going through the code I've had
to wrestle with in APR!  Basically I suggest starting from scratch!

Can I ask, how committed are we to binary compatability, as this stuff
really needs to be ripped out and rewritten, which would blow away any
chance of binary compatibility.  It should be possible to support "recompile
and run" without much heartache...

david







[ Home | Signup | Help | Login | Archives | Lists ]

All trademarks and copyrights within the FreeLists archives are owned by their respective owners.
Everything else ©2007 Avenir Technologies, LLC.