From dfd0a9e218df69a25d416c09bf3bdc9f37b352ca Mon Sep 17 00:00:00 2001 From: "Charles.Forsyth" Date: Sun, 22 Feb 2009 17:35:59 +0000 Subject: 20090222-1735 --- appl/cmd/ndb/registry.b | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) (limited to 'appl/cmd/ndb') diff --git a/appl/cmd/ndb/registry.b b/appl/cmd/ndb/registry.b index 540c556b..15e55622 100644 --- a/appl/cmd/ndb/registry.b +++ b/appl/cmd/ndb/registry.b @@ -92,6 +92,7 @@ Event: adt { remove: fn(e: self ref Event); queue: fn(e: self ref Event, m: ref Tmsg.Read): string; post: fn(vers: int); + flush: fn(tag: int); }; filters: list of ref Filter; @@ -214,6 +215,9 @@ Serve: err = remove(fid); if(err == nil) srv.reply(ref Rmsg.Remove(m.tag)); + Flush => + Event.flush(m.oldtag); + srv.default(gm); * => srv.default(gm); } @@ -374,7 +378,8 @@ svcnameok(s: string): string "new" or "event" or "find" or - "index" => + "index" or + "" => return "bad service name"; } for(i = 0; i < nservices; i++) @@ -460,16 +465,25 @@ navigator(navops: chan of ref Navop) d[1] = Qindex; d[2] = Qfind; d[3] = Qevent; + nd := 0; for(i := 0; i < nservices; i++) - if(services[i].name != nil) - d[i + Nstatic] = (services[i].id<fprint(sys->fildes(2), "registry: bad qid %#ux: %s\n", d[i], err); + else + n.reply <-= (dir, err); + } n.reply <-= (nil, nil); } } @@ -696,6 +710,17 @@ Event.post(vers: int) } } +Event.flush(tag: int) +{ + for(l := events; l != nil; l = tl l){ + e := hd l; + if(e.m != nil && e.m.tag == tag){ + e.m = nil; + break; + } + } +} + dbload(db: ref Db) { ptr: ref Attrdb->Dbptr; -- cgit v1.2.3