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; Namespace(int id)47 Namespace (int id) { 48 this.id = id; 49 } 50 51 /** 52 * @return int constant shared with native code 53 */ getId()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 */ LocalSocketAddress(String name, Namespace namespace)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 */ LocalSocketAddress(String name)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 */ getName()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 */ getNamespace()97 public Namespace getNamespace() { 98 return namespace; 99 } 100 } 101