blob: 8265b85bfcf84aae667324ababf2f6c0e1ae5e91 [file] [log] [blame]
/*
* 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;
}
}