|  | /* | 
|  | * 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; | 
|  | } | 
|  | } |