[DGD] buffer maintenance

John Ruiz jruiz at johnruiz.com
Sun Sep 19 09:24:10 CEST 2004


Hey All,

I'm fooling around with the Intermud-3 Protocol.  I've gotten my imud3
daemon to connect to the router and send a "startup-req-3" packet.  The
problem I'm having is with the string buffer I use to hold incoming
data.  

When some subset of the string data in the buffer can be turned into a
IMUD-3 packet, I want to remove that data from the buffer.  One can
recognize a packet's end by looking for a string matching "})\000".

Please, I'd like to hear your advice on how to search my buffer for the
lastIndexOf("})\000") and then remove the data preceeding it from the
buffer.  The way that I've come up with seems terribly inefficient and,
also, seems not to work. :)

Any psuedo code would be appreciated.

Thanks,
John

/*
 * Name: trimBuffer()
 * Purpose: removes from the buffer data which has been handled.
 * Parameters: none
 * Returns:   none
 */
void trimBuffer()
{
    int i;

    // trim until all complete packets are removed.
    while(  sscanf( inBuffer, "})\000" )  !=  0  )
    {
        for( i=0; i<strlen(inBuffer)-3; i++ )
        {
            // do we have a complete packet at "i"?
            if( inBuffer[i..i+2] == "})\000" )
            {
                // remove everything before and including "\000"
                inBuffer = inBuffer[i+2..strlen(inBuffer)-1];

                // we've messed with inBuffer!
                break;
            }
        }
    }
}

---=[Example Buffer]=---
^@^@^@c({"startup-reply",5,"*gjs",0,"No Place Special",0,({({"*gjs","1
98.144.203.194 9000",}),}),48092,})^@^@^@^GR({"mudlist",5,"*gjs",0,"No
Place Special",0,10533552,(["YourWor
ld":0,"Darenok":({0,"24.6.231.86",5555,0,0,"CoffeeMud v4.6.0","CoffeeMud
v4.6.0"
,"CoffeeMud v4.6.0","CoffeeMud","Open to the
public","",(["locate":1,"channel":1
,"who":1,"finger":1,"tell":1,]),([]),}),"FunMUD":({0,"213.112.214.42",4096,4446,
4447,"FunMUD v0.01","FunMUD","DGD DGD 1.2.65","LPMud","Mudlib
Development","info
@mud.fjortis.nu",(["locate":1,"channel":1,"who":1,"ftp":4445,"tell":1,]),([]),})
,"Tattered Sails":0,"Lands of
Liranos":({0,"68.214.91.39",5555,0,0,"CoffeeMud v4
.6.1","CoffeeMud v4.6.1","CoffeeMud v4.6.1","CoffeeMud","Open to the
public","",
(["locate":1,"channel":1,"who":1,"finger":1,"tell":1,]),([]),}),"Aeternus Build
Port":({-1,"66.169.23.166",4050,0,0,"Chronicles
1.20a","Chronicles","AFKMud","13
C","Development","orion_elder at charter.net",(["channel":1,"emoteto":1,"finger":1,
"rcp":0,"smtp":0,"locate":1,"url":"Not
configured","pop3":0,"auth":0,"amrcp":0,"
beep":1,"nntp":0,"ucache":1,"http":0,"mail":0,"news":0,"file":0,"who":1,"tell":1
,"ftp":0,]),0,}),"Darkland":({-1,"69.151.64.240",3000,3005,0,"DarkSkylib
.5","Di
scworld","MudOS v22.2b12-DS","LP","Mudlib
Development","user at host.com",(["locate
":1,"channel":1,"emoteto":1,"who":1,"finger":1,"http":3080,"ftp":3021,"tell":1,]
),([]),}),"Skylarks_Place":({0,"203.111.75.195",4242,8765,0,"Discworld
17.0a","S
kylarks_Place","FluffOS
v1.22","LPMud","Development","none",(["channel":1,"emote
to":1,"finger":1,"http":80,"locate":1,"who":1,"ftp":4444,"tell":1,"auth":1,]),0,}),"Dream.o
f.the.nation":({-1,"222.156.192.26",4000,4008,4012,"Eastern Stories
2.1.3a","Eas
tern Stories 2.1.3a","MudOS
v22.2b14-msr(RW)","LPmud","Developing","msr at muds.net
",(["channel":1,"emoteto":1,"rcp":0,"finger":1,"smtp":0,"locate":1,"auth":1,"nnt
p":0,"ucache":1,"news":1,"http":0,"mail":1,"file":1,"who":1,"amcp":0,"ftp":0,"te
ll":1,]),0,}),"Dark Forest
Bld":0,]),})^@^@^@^G356({"mudlist",5,"*gjs",0,"No Pla
ce
Special",0,10533553,(["1stMud-1476488617":({0,"24.237.3.43",5000,0,0,"1stMud
4.5.3","1stMud","1stMud I3 Driver
2.40","1stMud","Beta","admin at firstmud.com",(["
beep":1,"channel":1,"emoteto":1,"ucache":1,"mail":1,"finger":1,"news":1,"file":1
,"locate":1,"who":1,"tell":1,"auth":1,]),(["url":"firstmud.com:5001","time":"Fri
 Sep 17 20:21:01 2004",]),}),"MogMUD":0,"Shattered
Realms":({-1,"130.236.227.234
",4001,0,0,"SRlib v1.5 (FRlib IVb)","SR","MudOS v22.2b9 DEV","LP","open
to playe
rs","lords at shattered-realms.morth.org",(["channel":1,"finger":1,"mail":1,"http":
8080,"smtp":3007,"who":1,"pop3":3008,"ftp":3010,"tell":1,]),0,}),"1stMud-5536362
08":({0,"24.237.3.43",3785,0,0,"1stMud 4.5.3","1stMud","1stMud I3 Driver
2.40","
1stMud","Beta","admin at firstmud.com",(["beep":1,"channel":1,"emoteto":1,"ucache":
1,"mail":1,"finger":1,"news":1,"file":1,"locate":1,"who":1,"tell":1,"auth":1,]),
(["url":"firstmud.com:3786","time":"Fri Sep 17 20:30:40
2004",]),}),"Darkened":(
{-1,"82.113.130.200",300


_________________________________________________________________
List config page:  http://list.imaginary.com/mailman/listinfo/dgd



More information about the DGD mailing list