Dmitrii Shmatko
slides: https://hackmd.io/@0klO-1bXTU-4eDnt-ZnrHg/d#/
Read full Discovery v5 specification
What's node ID?
/**
* Netty-specific extension of {@link DiscoveryServer}.
* Made to reuse server channel for client.
*/
public interface NettyDiscoveryServer extends DiscoveryServer {
/**
* Reuse Netty server channel with client,
* so you are able to send packets from the same port
*/
CompletableFuture<Void> useDatagramChannel(
Consumer<NioDatagramChannel> consumer);
}
Pipeline setup:
incomingPipeline
.addHandler(new IncomingDataPacker())
.addHandler(new WhoAreYouAttempt(homeNode.getNodeId()))
.addHandler(new WhoAreYouSessionResolver(authTagRepo))
.addHandler(new UnknownPacketTagToSender(homeNode))
.addHandler(nodeIdToSession)
.addHandler(new UnknownPacketTypeByStatus())
.addHandler(new NotExpectedIncomingPacketHandler())
.addHandler(new WhoAreYouPacketHandler(outgoingPipeline, taskScheduler))
start:
incomingPipeline.build();
Flux.from(discoveryServer.getIncomingPackets())
.subscribe(incomingPipeline::push);
setup:
outgoingPipeline
.addHandler(new OutgoingParcelHandler(outgoingSink))
.addHandler(new NodeSessionRequestHandler())
.addHandler(nodeIdToSession)
.addHandler(new NewTaskHandler())
.addHandler(new NextTaskHandler(outgoingPipeline, taskScheduler));
usage:
public void sendOutgoing(Packet packet) {
logger.trace(() -> String.format("Sending outgoing packet %s in session %s", packet, this));
outgoing.accept(packet);
}
as defined in EIP-778
You can find discovery implementation on Github
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing