Class UpnpIgdPortMapping
- java.lang.Object
-
- org.drasyl.remote.handler.portmapper.UpnpIgdPortMapping
-
- All Implemented Interfaces:
PortMapping
public class UpnpIgdPortMapping extends Object implements PortMapping
Port Forwarding on NAT-enabled routers via UPnP-IGD.This methods requires the following steps:
- SSDP: do a discovery to find internet gateway devices
- UPnP: request service information from each discovered gateway
- UPnP: check if device is connected and has an external ip address
- UPnP: check for existing port mapping and reuse it
- UPnP: if there is no port mapping, create a new one
-
-
Constructor Summary
Constructors Constructor Description UpnpIgdPortMapping()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
acceptMessage(AddressedByteBuf msg)
Is called for incoming messages and returns true if the message should be consumed and removed from the pipeline.void
handleMessage(HandlerContext ctx, AddressedByteBuf msg)
Is called for incoming messages and thus enables this method to react to relevant messages.void
start(HandlerContext ctx, NodeUpEvent event, Runnable onFailure)
Tells the method to create a port forwarding and renew it independently.void
stop(HandlerContext ctx)
Shall remove any existing port forwarding again.String
toString()
-
-
-
Field Detail
-
TIMEOUT
public static final Duration TIMEOUT
-
-
Method Detail
-
start
public void start(HandlerContext ctx, NodeUpEvent event, Runnable onFailure)
Description copied from interface:PortMapping
Tells the method to create a port forwarding and renew it independently. If no forwarding can be created,onFailure
must be called once.- Specified by:
start
in interfacePortMapping
- Parameters:
ctx
- the handler contextevent
- the node up eventonFailure
- will be called once on failure
-
stop
public void stop(HandlerContext ctx)
Description copied from interface:PortMapping
Shall remove any existing port forwarding again.- Specified by:
stop
in interfacePortMapping
- Parameters:
ctx
- the handler context
-
acceptMessage
public boolean acceptMessage(AddressedByteBuf msg)
Description copied from interface:PortMapping
Is called for incoming messages and returns true if the message should be consumed and removed from the pipeline.- Specified by:
acceptMessage
in interfacePortMapping
- Parameters:
msg
- the message- Returns:
true
if the message is relevant for the current port forwarding method. Otherwisefalse
-
handleMessage
public void handleMessage(HandlerContext ctx, AddressedByteBuf msg)
Description copied from interface:PortMapping
Is called for incoming messages and thus enables this method to react to relevant messages.- Specified by:
handleMessage
in interfacePortMapping
- Parameters:
ctx
- the handler contextmsg
- the message
-
-