# Connection redirection

Kipp the Kidd (mcmudge@mailbox.syr.edu)
Fri, 23 Feb 1996 01:56:56 PST

- Messages sorted by:[ date ][ thread ][ subject ][ author ]

    (While just reading through this, I found that it might be a bit
    confusing... you should still at least figure out the code.)

    >I wrote a bind(obj, obj) function which would bind any connection
    >(unconnected `negative' object or not) and rebind it to any other
    >connection, playerbit or not.
                 ^^^^^^^^^

    While disagreeing with this whole idea, I suddenly found something that
    makes sense.  Wouldn't it be MUCH simpler if ALL incoming/outgoing
    connections, positive OR negative, that are not in a read() simply went
    through #0:handle_input()?  :handle_input() would have to handle stuff like
    redirect(login-screen-player,real-player) and parse(player,cmd).
    #0:new_connection() would simply be called when someone connects.
    To make this hack completely compatable with the current set up, the verbs
    would look like this:

    #0:handle_input
    if(valid(player))
      this:do_command(@args) || parse(player,argstr);
    else
      valid(what=this:do_login_command(@args)) && is_player(what) &&
    redirect(player,what);
    endif
    .
    #0:new_connection
    valid(what=this:do_login_command("")) && is_player(what) &&
    redirect(player,what);
    .

    This code won't print connected/created messages, but it'd still work.  It
    should clear up ALOT of mix-arounds in the server, make read()s in the login
    possible, clear up confusion about user_connected/user_disconnected (one is
    called with non-player connections and one isn't), and sort the connections
    into four or five verbs:
    new_incoming_connection
    new_outgoing_connection
    handle_input
    user_client_disconnected
    user_disconnected

    I'm not sure how easy this would be to implement, or worse, how hard it'd be
    to clean out the old way.  I will see if I can make a patch for this!

    - Kipp
    -----BEGIN GEEK CODE BLOCK-----
    GCS/CC d- s+:- a16 C++ UL++++ P+ L++ E-? W+ !N--@ !o-- K->K++++++
    w++(--) O- M-- V--? PS++(+) PE(--) Y+ PGP-? t+ 5(+) X++ R+++(*)
    !tv b+ DI++++ D++++ G e* h!()(*) r+ !y+
    ------END GEEK CODE BLOCK------
    -----BEGIN NOT SO GEEKY BLOCK-----
    MOO projects:
      RPG Minimal.db:  paradigm.microwave.com 5000
      MOO2000:         moo.microwave.com 2000
      MundoHispano:    europa.syr.edu 8888
    ------END NOT SO GEEKY BLOCK------