Home | History | Annotate | Download | only in net
      1 /*
      2  * Copyright (C) 2007 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * 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,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.net;
     18 
     19 /**
     20  * A UNIX-domain (AF_LOCAL) socket address. For use with
     21  * android.net.LocalSocket and android.net.LocalServerSocket.
     22  *
     23  * On the Android system, these names refer to names in the Linux
     24  * abstract (non-filesystem) UNIX domain namespace.
     25  */
     26 public class LocalSocketAddress
     27 {
     28     /**
     29      * The namespace that this address exists in. See also
     30      * include/cutils/sockets.h ANDROID_SOCKET_NAMESPACE_*
     31      */
     32     public enum Namespace {
     33         /** A socket in the Linux abstract namespace */
     34         ABSTRACT(0),
     35         /**
     36          * A socket in the Android reserved namespace in /dev/socket.
     37          * Only the init process may create a socket here.
     38          */
     39         RESERVED(1),
     40         /**
     41          * A socket named with a normal filesystem path.
     42          */
     43         FILESYSTEM(2);
     44 
     45         /** The id matches with a #define in include/cutils/sockets.h */
     46         private int id;
     47         Namespace (int id) {
     48             this.id = id;
     49         }
     50 
     51         /**
     52          * @return int constant shared with native code
     53          */
     54         /*package*/ int getId() {
     55             return id;
     56         }
     57     }
     58 
     59     private final String name;
     60     private final Namespace namespace;
     61 
     62     /**
     63      * Creates an instance with a given name.
     64      *
     65      * @param name non-null name
     66      * @param namespace namespace the name should be created in.
     67      */
     68     public LocalSocketAddress(String name, Namespace namespace) {
     69         this.name = name;
     70         this.namespace = namespace;
     71     }
     72 
     73     /**
     74      * Creates an instance with a given name in the {@link Namespace#ABSTRACT}
     75      * namespace
     76      *
     77      * @param name non-null name
     78      */
     79     public LocalSocketAddress(String name) {
     80         this(name,Namespace.ABSTRACT);
     81     }
     82 
     83     /**
     84      * Retrieves the string name of this address
     85      * @return string name
     86      */
     87     public String getName()
     88     {
     89         return name;
     90     }
     91 
     92     /**
     93      * Returns the namespace used by this address.
     94      *
     95      * @return non-null a namespace
     96      */
     97     public Namespace getNamespace() {
     98         return namespace;
     99     }
    100 }
    101