content: /*
   * Copyright (C) 2007 The Android Open Source Project
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package android.net;
  
  /**
   * A UNIX-domain (AF_LOCAL) socket address. For use with
   * android.net.LocalSocket and android.net.LocalServerSocket.
   *
   * On the Android system, these names refer to names in the Linux
   * abstract (non-filesystem) UNIX domain namespace.
   */
  public class LocalSocketAddress
  {
      /**
       * The namespace that this address exists in. See also
       * include/cutils/sockets.h ANDROID_SOCKET_NAMESPACE_*
       */
      public enum Namespace {
          /** A socket in the Linux abstract namespace */
          ABSTRACT(0),
          /**
           * A socket in the Android reserved namespace in /dev/socket.
           * Only the init process may create a socket here.
           */
          RESERVED(1),
          /**
           * A socket named with a normal filesystem path.
           */
          FILESYSTEM(2);
  
          /** The id matches with a #define in include/cutils/sockets.h */
          private int id;
          Namespace (int id) {
              this.id = id;
          }
  
          /**
           * @return int constant shared with native code
           */
          /*package*/ int getId() {
              return id;
          }
      }
  
      private final String name;
      private final Namespace namespace;
  
      /**
       * Creates an instance with a given name.
       *
       * @param name non-null name
       * @param namespace namespace the name should be created in.
       */
      public LocalSocketAddress(String name, Namespace namespace) {
          this.name = name;
          this.namespace = namespace;
      }
  
      /**
       * Creates an instance with a given name in the {@link Namespace#ABSTRACT}
       * namespace
       *
       * @param name non-null name
       */
      public LocalSocketAddress(String name) {
          this(name,Namespace.ABSTRACT);
      }
  
      /**
       * Retrieves the string name of this address
       * @return string name
       */
      public String getName()
      {
          return name;
      }
  
      /**
       * Returns the namespace used by this address.
       *
       * @return non-null a namespace
       */
      public Namespace getNamespace() {
          return namespace;
      }
  }
  