Metadata support in the client-client protocol

Technical discussion about the NMDC and <a href="http://dcpp.net/ADC.html">ADC</A> protocol. The NMDC protocol is documented in the <a href="http://dcpp.net/wiki/">Wiki</a>, so feel free to refer to it.

Moderator: Moderators

Locked
cologic
Programmer
Posts: 337
Joined: 2003-01-06 13:32
Contact:

Metadata support in the client-client protocol

Post by cologic » 2003-04-28 17:57

The best suggestion I've heard to far involves:

Code: Select all

$Supports <blahblah, the usual DC++ supports> Meta <additional specific metadata types supported>|
for example, neglecting the blahblah parts:

Code: Select all

$Supports Meta TTH|
where TTH is tiger tree hashing. One more new client-client command seems necessary:

Code: Select all

$GetMeta <filenameandpath>$<MetaParams>|
Where <MetaParams> could be "Hash$TTH$<TTH depth>". A response would be:

Code: Select all

$MetaLength <sizeinbytes>$<MetaParamsAchieved>|
followed by the information itself. A $PutMeta could be used as well, similarly to the $Send command, but I don't see the need ($Send strikes me as rather redundant).

sandos
Posts: 186
Joined: 2003-01-05 10:16
Contact:

Re: Metadata support in the client-client protocol

Post by sandos » 2003-04-29 04:46

cologic wrote:The best suggestion I've heard to far involves:

Code: Select all

$Supports <blahblah, the usual DC++ supports> Meta <additional specific metadata types supported>|
So the Meta subpart of $Supports ends at the pipe? What if we want to add another supports with a sub-supports? I would like something that clearly marks what belongs to the Meta part.

cologic
Programmer
Posts: 337
Joined: 2003-01-06 13:32
Contact:

Post by cologic » 2003-04-29 06:33

I didn't mean to imply a hierarchical $Supports statement - though I can see the case for one, that's not what I'm proposing here.

Rather, Meta just happens to be one of the $Supports arguments, and order doesn't particularly matter.

sandos
Posts: 186
Joined: 2003-01-05 10:16
Contact:

Post by sandos » 2003-04-29 08:07

cologic wrote:I didn't mean to imply a hierarchical $Supports statement - though I can see the case for one, that's not what I'm proposing here.

Rather, Meta just happens to be one of the $Supports arguments, and order doesn't particularly matter.
Well, yeah. I thought about it a bit and I did eventually guess that you didnt actually meant it in a hierarchal way. Wouldnt this also work then (no ambiguities possible?, slightly more data to tranfser):

$Supports <blah> MetaTTH MetaMP3BR MetaMP3ID3 usw

ender
Posts: 224
Joined: 2003-01-03 17:47

Post by ender » 2003-04-29 08:38

What about

Code: Select all

$Supports something something-else $Meta TTH MP3BR $xyz abc ...|

Sedulus
Forum Moderator
Posts: 687
Joined: 2003-01-04 09:32
Contact:

Post by Sedulus » 2003-04-29 08:53

well..
that would limit the hierarchy to 2 levels,
you might wind up with ugliness like
$Supports something something-else $$Meta $Hash TTH SHA-1 $$xyz...|
if you want nesting, I'd go with parentheses or /-notations
BZList Meta(Hash(TTH SHA-1)) Xyz
and
BZList Meta Hash TTH SHA-1 /Hash /Meta Xyz
respectively

the problem with just having Meta and TTH would arise when TTH would be an option for something different than the GetMeta command.
I guess I'd opt for
$Supports bla bla MetaHashTTH bla
to keep it simple..
in any case, we all know that huge commands work fine (see $NickList), so a bit large $Supports list shouldn't matter
http://dc.selwerd.nl/hublist.xml.bz2
http://www.b.ali.btinternet.co.uk/DCPlusPlus/index.html (TheParanoidOne's DC++ Guide)
http://www.dslreports.com/faq/dc (BSOD2600's Direct Connect FAQ)

volkris
Posts: 121
Joined: 2003-02-02 18:07
Contact:

Post by volkris » 2003-04-29 08:53

This is hopefully a stupid and ignorant question, but why is meta needed again? Why can't it simply be

Code: Select all

$Supports <normal DC++ stuff> <Stuff after the meta>

Locked