src/java.base/share/classes/java/net/AbstractPlainDatagramSocketImpl.java
branchdatagramsocketimpl-branch
changeset 58680 7e9e2f10a050
parent 58679 9c3209ff7550
child 58697 e3ff12d14d43
equal deleted inserted replaced
58679:9c3209ff7550 58680:7e9e2f10a050
    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();