1 /* 2 * Copyright 2012 The Netty Project 3 * 4 * The Netty Project licenses this file to you under the Apache License, 5 * version 2.0 (the "License"); you may not use this file except in compliance 6 * with the License. You may obtain a copy of the License at: 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations 14 * under the License. 15 */ 16 package io.netty.channel.socket; 17 18 import io.netty.channel.Channel; 19 import io.netty.channel.ChannelFuture; 20 import io.netty.channel.ChannelPromise; 21 22 import java.net.InetAddress; 23 import java.net.InetSocketAddress; 24 import java.net.NetworkInterface; 25 26 /** 27 * A UDP/IP {@link Channel}. 28 */ 29 public interface DatagramChannel extends Channel { 30 @Override 31 DatagramChannelConfig config(); 32 @Override 33 InetSocketAddress localAddress(); 34 @Override 35 InetSocketAddress remoteAddress(); 36 37 /** 38 * Return {@code true} if the {@link DatagramChannel} is connected to the remote peer. 39 */ 40 boolean isConnected(); 41 42 /** 43 * Joins a multicast group and notifies the {@link ChannelFuture} once the operation completes. 44 */ 45 ChannelFuture joinGroup(InetAddress multicastAddress); 46 47 /** 48 * Joins a multicast group and notifies the {@link ChannelFuture} once the operation completes. 49 * 50 * The given {@link ChannelFuture} will be notified and also returned. 51 */ 52 ChannelFuture joinGroup(InetAddress multicastAddress, ChannelPromise future); 53 54 /** 55 * Joins the specified multicast group at the specified interface and notifies the {@link ChannelFuture} 56 * once the operation completes. 57 */ 58 ChannelFuture joinGroup(InetSocketAddress multicastAddress, NetworkInterface networkInterface); 59 60 /** 61 * Joins the specified multicast group at the specified interface and notifies the {@link ChannelFuture} 62 * once the operation completes. 63 * 64 * The given {@link ChannelFuture} will be notified and also returned. 65 */ 66 ChannelFuture joinGroup( 67 InetSocketAddress multicastAddress, NetworkInterface networkInterface, ChannelPromise future); 68 69 /** 70 * Joins the specified multicast group at the specified interface and notifies the {@link ChannelFuture} 71 * once the operation completes. 72 */ 73 ChannelFuture joinGroup(InetAddress multicastAddress, NetworkInterface networkInterface, InetAddress source); 74 75 /** 76 * Joins the specified multicast group at the specified interface and notifies the {@link ChannelFuture} 77 * once the operation completes. 78 * 79 * The given {@link ChannelFuture} will be notified and also returned. 80 */ 81 ChannelFuture joinGroup( 82 InetAddress multicastAddress, NetworkInterface networkInterface, InetAddress source, ChannelPromise future); 83 84 /** 85 * Leaves a multicast group and notifies the {@link ChannelFuture} once the operation completes. 86 */ 87 ChannelFuture leaveGroup(InetAddress multicastAddress); 88 89 /** 90 * Leaves a multicast group and notifies the {@link ChannelFuture} once the operation completes. 91 * 92 * The given {@link ChannelFuture} will be notified and also returned. 93 */ 94 ChannelFuture leaveGroup(InetAddress multicastAddress, ChannelPromise future); 95 96 /** 97 * Leaves a multicast group on a specified local interface and notifies the {@link ChannelFuture} once the 98 * operation completes. 99 */ 100 ChannelFuture leaveGroup(InetSocketAddress multicastAddress, NetworkInterface networkInterface); 101 102 /** 103 * Leaves a multicast group on a specified local interface and notifies the {@link ChannelFuture} once the 104 * operation completes. 105 * 106 * The given {@link ChannelFuture} will be notified and also returned. 107 */ 108 ChannelFuture leaveGroup( 109 InetSocketAddress multicastAddress, NetworkInterface networkInterface, ChannelPromise future); 110 111 /** 112 * Leave the specified multicast group at the specified interface using the specified source and notifies 113 * the {@link ChannelFuture} once the operation completes. 114 * 115 */ 116 ChannelFuture leaveGroup( 117 InetAddress multicastAddress, NetworkInterface networkInterface, InetAddress source); 118 119 /** 120 * Leave the specified multicast group at the specified interface using the specified source and notifies 121 * the {@link ChannelFuture} once the operation completes. 122 * 123 * The given {@link ChannelFuture} will be notified and also returned. 124 */ 125 ChannelFuture leaveGroup( 126 InetAddress multicastAddress, NetworkInterface networkInterface, InetAddress source, 127 ChannelPromise future); 128 129 /** 130 * Block the given sourceToBlock address for the given multicastAddress on the given networkInterface and notifies 131 * the {@link ChannelFuture} once the operation completes. 132 * 133 * The given {@link ChannelFuture} will be notified and also returned. 134 */ 135 ChannelFuture block( 136 InetAddress multicastAddress, NetworkInterface networkInterface, 137 InetAddress sourceToBlock); 138 139 /** 140 * Block the given sourceToBlock address for the given multicastAddress on the given networkInterface and notifies 141 * the {@link ChannelFuture} once the operation completes. 142 * 143 * The given {@link ChannelFuture} will be notified and also returned. 144 */ 145 ChannelFuture block( 146 InetAddress multicastAddress, NetworkInterface networkInterface, 147 InetAddress sourceToBlock, ChannelPromise future); 148 149 /** 150 * Block the given sourceToBlock address for the given multicastAddress and notifies the {@link ChannelFuture} once 151 * the operation completes. 152 * 153 * The given {@link ChannelFuture} will be notified and also returned. 154 */ 155 ChannelFuture block(InetAddress multicastAddress, InetAddress sourceToBlock); 156 157 /** 158 * Block the given sourceToBlock address for the given multicastAddress and notifies the {@link ChannelFuture} once 159 * the operation completes. 160 * 161 * The given {@link ChannelFuture} will be notified and also returned. 162 */ 163 ChannelFuture block( 164 InetAddress multicastAddress, InetAddress sourceToBlock, ChannelPromise future); 165 }