On Apr 16, 2008, at 11:14 AM, Trond Norbye wrote:
On Apr 16, 2008, at 9:52 AM, Dustin Sallings wrote:
Stats are ugly and required a lot of thought. We tried to hold of
on designing a mechanism as long as we could (Trond suggested we
wait for, you know, someone to care), but in the end, we decided to
do something like an implied multi-get since Dormando claims to
care a lot. Enough to implement it anyway. :)
A stats command is issued with a single string parameter, and the
server returns multiple responses, each containing a key, and a
string value. A terminating packet indicates the server has
nothing more to say. [We didn't really talk about the details of
this, but I'd recommend terminating with a stat with a 0 length key
and 0 length value.]
I was thinking of this on my drive home trying to figure out a
solution, and I was thinking that a better solution might be to
return an "xml" document (yes, I know you all are screaming now)..
But.. who is the main consumer for the stats command? well it is
some sort of a management agent. Most languages contains libraries
to parse xml-documents, so it should be easy for them to "suck out"
the data they need (and it's not that much overhead to create it)..
XML is a verbose format, but if we return a single "packet" pr stat-
item we add a 24 byte header for each item so I don't know if we
actually save anything by using single packets over the tag-overhead
in xml...
Well, that's just an idea. (I think it will be easier to create a
management agent to use the data if it is encoded in XML with all
the XML libraries out there).. but then again, I didn't see the
point of creating the stats command before we had an actual use-case
for the command ;-)
The other thing I remembered in the car was that the version-command
is not specified in the protocol. I sent a suggestion for it a time
ago to the mailing list.. any comments on that format, or should we
go ahead and use it?
Too bad I didn't see Toru's suggestion, but I was so tired that I
had to drive home :( Anyway I had a great time last night, and it
was nice to meet all of you.
JSON is likewise very nice, and is a candidate for being recommended
as a universal serialization / cross-language format -- if we do go
ahead and define a baseline format all clients can assume will be
supported, let's use it!
I think the hard part about STATS is not the packet the data is
enclosed in, but rather _what_ data is returned and what it means!
Aaron