< prev index next >

src/java.base/share/classes/sun/nio/ch/MembershipKeyImpl.java

Print this page
rev 57536 : [mq]: Cleanup
   1 /*
   2  * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


  46 
  47     private volatile boolean invalid;
  48 
  49     // lock used when creating or accessing blockedSet
  50     private final Object stateLock = new Object();
  51 
  52     // set of source addresses that are blocked
  53     private HashSet<InetAddress> blockedSet;
  54 
  55     private MembershipKeyImpl(MulticastChannel ch,
  56                               InetAddress group,
  57                               NetworkInterface interf,
  58                               InetAddress source)
  59     {
  60         this.ch = ch;
  61         this.group = group;
  62         this.interf = interf;
  63         this.source = source;
  64     }
  65 




  66     /**
  67      * MembershipKey will additional context for IPv4 membership
  68      */
  69     static class Type4 extends MembershipKeyImpl {
  70         private final int groupAddress;
  71         private final int interfAddress;
  72         private final int sourceAddress;
  73 
  74         Type4(MulticastChannel ch,
  75               InetAddress group,
  76               NetworkInterface interf,
  77               InetAddress source,
  78               int groupAddress,
  79               int interfAddress,
  80               int sourceAddress)
  81         {
  82             super(ch, group, interf, source);
  83             this.groupAddress = groupAddress;
  84             this.interfAddress = interfAddress;
  85             this.sourceAddress = sourceAddress;
  86         }
  87 
  88         int groupAddress() {
  89             return groupAddress;
  90         }
  91 
  92         int interfaceAddress() {
  93             return interfAddress;
  94         }
  95 
  96         int source() {
  97             return sourceAddress;
  98         }
  99     }
 100 
 101     /**
 102      * MembershipKey will additional context for IPv6 membership
 103      */
 104     static class Type6 extends MembershipKeyImpl {
 105         private final byte[] groupAddress;
 106         private final int index;
 107         private final byte[] sourceAddress;
 108 
 109         Type6(MulticastChannel ch,
 110               InetAddress group,
 111               NetworkInterface interf,
 112               InetAddress source,
 113               byte[] groupAddress,
 114               int index,
 115               byte[] sourceAddress)
 116         {
 117             super(ch, group, interf, source);
 118             this.groupAddress = groupAddress;
 119             this.index = index;
 120             this.sourceAddress = sourceAddress;
 121         }
 122 
 123         byte[] groupAddress() {
 124             return groupAddress;
 125         }
 126 
 127         int index() {
 128             return index;
 129         }
 130 
 131         byte[] source() {
 132             return sourceAddress;
 133         }
 134     }
 135 
 136     public boolean isValid() {
 137         return !invalid;
 138     }
 139 
 140     // package-private
 141     void invalidate() {
 142         invalid = true;
 143     }
 144 
 145     public void drop() {
 146         // delegate to channel
 147         ((DatagramChannelImpl)ch).drop(this);
 148     }
 149 
 150     @Override


   1 /*
   2  * Copyright (c) 2008, 2020, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


  46 
  47     private volatile boolean invalid;
  48 
  49     // lock used when creating or accessing blockedSet
  50     private final Object stateLock = new Object();
  51 
  52     // set of source addresses that are blocked
  53     private HashSet<InetAddress> blockedSet;
  54 
  55     private MembershipKeyImpl(MulticastChannel ch,
  56                               InetAddress group,
  57                               NetworkInterface interf,
  58                               InetAddress source)
  59     {
  60         this.ch = ch;
  61         this.group = group;
  62         this.interf = interf;
  63         this.source = source;
  64     }
  65 
  66     int interfaceIndex() {
  67         return interf.getIndex();
  68     }
  69 
  70     /**
  71      * MembershipKey will additional context for IPv4 membership
  72      */
  73     static class Type4 extends MembershipKeyImpl {
  74         private final int groupAddress;
  75         private final int interfAddress;
  76         private final int sourceAddress;
  77 
  78         Type4(MulticastChannel ch,
  79               InetAddress group,
  80               NetworkInterface interf,
  81               InetAddress source,
  82               int groupAddress,
  83               int interfAddress,
  84               int sourceAddress)
  85         {
  86             super(ch, group, interf, source);
  87             this.groupAddress = groupAddress;
  88             this.interfAddress = interfAddress;
  89             this.sourceAddress = sourceAddress;
  90         }
  91 
  92         int groupAddress() {
  93             return groupAddress;
  94         }
  95 
  96         int interfaceAddress() {
  97             return interfAddress;
  98         }
  99 
 100         int source() {
 101             return sourceAddress;
 102         }
 103     }
 104 
 105     /**
 106      * MembershipKey will additional context for IPv6 membership
 107      */
 108     static class Type6 extends MembershipKeyImpl {
 109         private final byte[] groupAddress;

 110         private final byte[] sourceAddress;
 111 
 112         Type6(MulticastChannel ch,
 113               InetAddress group,
 114               NetworkInterface interf,
 115               InetAddress source,
 116               byte[] groupAddress,

 117               byte[] sourceAddress)
 118         {
 119             super(ch, group, interf, source);
 120             this.groupAddress = groupAddress;

 121             this.sourceAddress = sourceAddress;
 122         }
 123 
 124         byte[] groupAddress() {
 125             return groupAddress;
 126         }
 127 




 128         byte[] source() {
 129             return sourceAddress;
 130         }
 131     }
 132 
 133     public boolean isValid() {
 134         return !invalid;
 135     }
 136 
 137     // package-private
 138     void invalidate() {
 139         invalid = true;
 140     }
 141 
 142     public void drop() {
 143         // delegate to channel
 144         ((DatagramChannelImpl)ch).drop(this);
 145     }
 146 
 147     @Override


< prev index next >