equal
deleted
inserted
replaced
28 import java.io.IOException; |
28 import java.io.IOException; |
29 import java.util.Collections; |
29 import java.util.Collections; |
30 import java.util.HashSet; |
30 import java.util.HashSet; |
31 import java.util.Objects; |
31 import java.util.Objects; |
32 import java.util.Set; |
32 import java.util.Set; |
33 |
33 import sun.net.PlatformDatagramSocketImpl; |
34 import sun.net.ResourceManager; |
34 import sun.net.ResourceManager; |
35 import sun.net.ext.ExtendedSocketOptions; |
35 import sun.net.ext.ExtendedSocketOptions; |
36 import sun.net.util.IPAddressUtil; |
36 import sun.net.util.IPAddressUtil; |
37 import sun.security.action.GetPropertyAction; |
37 import sun.security.action.GetPropertyAction; |
38 |
38 |
44 * classes. |
44 * classes. |
45 * |
45 * |
46 * @author Pavani Diwanji |
46 * @author Pavani Diwanji |
47 */ |
47 */ |
48 |
48 |
49 abstract class AbstractPlainDatagramSocketImpl extends DatagramSocketImpl |
49 abstract class AbstractPlainDatagramSocketImpl extends PlatformDatagramSocketImpl |
50 { |
50 { |
51 /* timeout value for receive() */ |
51 /* timeout value for receive() */ |
52 int timeout = 0; |
52 int timeout; |
53 boolean connected = false; |
53 boolean connected; |
54 private int trafficClass = 0; |
54 private int trafficClass; |
55 protected InetAddress connectedAddress = null; |
55 protected InetAddress connectedAddress; |
56 private int connectedPort = -1; |
56 private int connectedPort = -1; |
57 |
57 |
58 private static final String os = |
58 private static final String os = |
59 GetPropertyAction.privilegedGetProperty("os.name"); |
59 GetPropertyAction.privilegedGetProperty("os.name"); |
60 |
60 |
80 if (!checkedReusePort) { |
80 if (!checkedReusePort) { |
81 isReusePortAvailable = isReusePortAvailable0(); |
81 isReusePortAvailable = isReusePortAvailable0(); |
82 checkedReusePort = true; |
82 checkedReusePort = true; |
83 } |
83 } |
84 return isReusePortAvailable; |
84 return isReusePortAvailable; |
|
85 } |
|
86 |
|
87 private final boolean isMulticast; |
|
88 |
|
89 AbstractPlainDatagramSocketImpl(boolean isMulticast) { |
|
90 this.isMulticast = isMulticast; |
85 } |
91 } |
86 |
92 |
87 /** |
93 /** |
88 * Creates a datagram socket |
94 * Creates a datagram socket |
89 */ |
95 */ |
428 return Collections.unmodifiableSet(options); |
434 return Collections.unmodifiableSet(options); |
429 } |
435 } |
430 |
436 |
431 @Override |
437 @Override |
432 protected Set<SocketOption<?>> supportedOptions() { |
438 protected Set<SocketOption<?>> supportedOptions() { |
433 if (getDatagramSocket() instanceof MulticastSocket) |
439 if (isMulticast) |
434 return multicastSocketOptions; |
440 return multicastSocketOptions; |
435 else |
441 else |
436 return datagramSocketOptions; |
442 return datagramSocketOptions; |
437 } |
443 } |
438 |
444 |
521 protected abstract Object socketGetOption(int opt) throws SocketException; |
527 protected abstract Object socketGetOption(int opt) throws SocketException; |
522 |
528 |
523 protected abstract void connect0(InetAddress address, int port) throws SocketException; |
529 protected abstract void connect0(InetAddress address, int port) throws SocketException; |
524 protected abstract void disconnect0(int family); |
530 protected abstract void disconnect0(int family); |
525 |
531 |
526 protected boolean nativeConnectDisabled() { |
532 @Override |
|
533 public boolean nativeConnectDisabled() { |
527 return connectDisabled; |
534 return connectDisabled; |
528 } |
535 } |
529 |
536 |
530 abstract int dataAvailable(); |
537 abstract int dataAvailable(); |
531 private static native boolean isReusePortAvailable0(); |
538 private static native boolean isReusePortAvailable0(); |