forked from schmittlauch/Hash2Pub
90 lines
2.1 KiB
Groff
90 lines
2.1 KiB
Groff
FediChordProtocol DEFINITIONS AUTOMATIC TAGS ::= BEGIN
|
|
|
|
NodeID ::= INTEGER (0..115792089237316195423570985008687907853269984665640564039457584007913129639935)
|
|
|
|
Domain ::= VisibleString
|
|
|
|
Request ::= SEQUENCE {
|
|
requestID INTEGER,
|
|
senderID NodeID,
|
|
parts INTEGER, -- number of message parts
|
|
part INTEGER, -- part number of this message
|
|
action ENUMERATED {queryID, join, leave, stabilise, ping},
|
|
actionPayload CHOICE {
|
|
queryIDSendPayload QueryIDSendPayload,
|
|
joinSendPayload JoinSendPayload,
|
|
leaveSendPayload LeaveSendPayload,
|
|
stabiliseSendPayload StabiliseSendPayload
|
|
}
|
|
}
|
|
|
|
Response ::= SEQUENCE {
|
|
responseTo INTEGER,
|
|
senderID NodeID,
|
|
parts INTEGER,
|
|
part INTEGER,
|
|
action ENUMERATED {queryID, join, leave, stabilise, ping},
|
|
actionPayload CHOICE {
|
|
queryIDReceivePayload QueryIDReceivePayload,
|
|
joinReceivePayload JoinReceivePayload,
|
|
leaveReceivePayload LeaveReceivePayload,
|
|
stabiliseReceivePayload StabiliseReceivePayload
|
|
}
|
|
}
|
|
|
|
NodeState ::= SEQUENCE {
|
|
nid NodeID,
|
|
domain Domain,
|
|
ipAddr OCTET STRING (SIZE(16)),
|
|
dhtPort INTEGER,
|
|
apPort INTEGER,
|
|
vServer INTEGER
|
|
}
|
|
|
|
CacheEntry ::= SEQUENCE {
|
|
node NodeState,
|
|
-- use unix time stamp, as DATE-TIME isn't supported by the Haskell lib
|
|
timestamp INTEGER
|
|
}
|
|
|
|
NodeCache ::= SEQUENCE OF CacheEntry
|
|
|
|
JoinSendPayload ::= NodeState
|
|
|
|
JoinReceivePayload ::= SEQUENCE {
|
|
successors SEQUENCE OF NodeID,
|
|
predecessors SEQUENCE OF NodeID,
|
|
cache NodeCache
|
|
}
|
|
|
|
QueryIDSendPayload ::= SEQUENCE {
|
|
targetID NodeID,
|
|
lBestNodes INTEGER
|
|
}
|
|
|
|
QueryResult ::= ENUMERATED { found, forward }
|
|
|
|
QueryIDReceivePayload ::= SEQUENCE {
|
|
result QueryResult,
|
|
nodeData NodeCache
|
|
}
|
|
|
|
StabiliseSendPayload ::= NodeState
|
|
|
|
StabiliseReceivePayload ::= SEQUENCE {
|
|
successors SEQUENCE OF NodeID,
|
|
predecessors SEQUENCE OF NodeID
|
|
-- ToDo: transfer of handled key data, if newly responsible for it
|
|
}
|
|
|
|
LeaveSendPayload ::= SEQUENCE {
|
|
successors SEQUENCE OF NodeID,
|
|
predecessors SEQUENCE OF NodeID
|
|
-- ToDo: transfer of own data to newly responsible node
|
|
}
|
|
|
|
LeaveReceivePayload ::= NULL -- just a confirmation
|
|
|
|
|
|
END
|