Merge "Set isConnected, isBound, implCreated on server-side LocalSockets" am: 75ba827a4e

am: 6a29676687

Change-Id: Icb55f2b160f6bd2f6c12845613ea3b4ea834693d
This commit is contained in:
Neil Fuller
2017-01-04 12:38:50 +00:00
committed by android-build-merger
3 changed files with 37 additions and 30 deletions

View File

@@ -87,9 +87,9 @@ public class LocalServerSocket {
{ {
LocalSocketImpl acceptedImpl = new LocalSocketImpl(); LocalSocketImpl acceptedImpl = new LocalSocketImpl();
impl.accept (acceptedImpl); impl.accept(acceptedImpl);
return new LocalSocket(acceptedImpl, LocalSocket.SOCKET_UNKNOWN); return LocalSocket.createLocalSocketForAccept(acceptedImpl, LocalSocket.SOCKET_UNKNOWN);
} }
/** /**

View File

@@ -75,17 +75,24 @@ public class LocalSocket implements Closeable {
isConnected = true; isConnected = true;
} }
/** private LocalSocket(LocalSocketImpl impl, int sockType) {
* for use with AndroidServerSocket
* @param impl a SocketImpl
*/
/*package*/ LocalSocket(LocalSocketImpl impl, int sockType) {
this.impl = impl; this.impl = impl;
this.sockType = sockType; this.sockType = sockType;
this.isConnected = false; this.isConnected = false;
this.isBound = false; this.isBound = false;
} }
/**
* for use with LocalServerSocket.accept()
*/
static LocalSocket createLocalSocketForAccept(LocalSocketImpl impl, int sockType) {
LocalSocket socket = new LocalSocket(impl, sockType);
socket.isConnected = true;
socket.isBound = true;
socket.implCreated = true;
return socket;
}
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public String toString() { public String toString() {

View File

@@ -235,29 +235,29 @@ class LocalSocketImpl
* @throws IOException * @throws IOException
*/ */
public void create(int sockType) throws IOException { public void create(int sockType) throws IOException {
// no error if socket already created if (fd != null) {
// need this for LocalServerSocket.accept() throw new IOException("LocalSocketImpl already has an fd");
if (fd == null) { }
int osType;
switch (sockType) { int osType;
case LocalSocket.SOCKET_DGRAM: switch (sockType) {
osType = OsConstants.SOCK_DGRAM; case LocalSocket.SOCKET_DGRAM:
break; osType = OsConstants.SOCK_DGRAM;
case LocalSocket.SOCKET_STREAM: break;
osType = OsConstants.SOCK_STREAM; case LocalSocket.SOCKET_STREAM:
break; osType = OsConstants.SOCK_STREAM;
case LocalSocket.SOCKET_SEQPACKET: break;
osType = OsConstants.SOCK_SEQPACKET; case LocalSocket.SOCKET_SEQPACKET:
break; osType = OsConstants.SOCK_SEQPACKET;
default: break;
throw new IllegalStateException("unknown sockType"); default:
} throw new IllegalStateException("unknown sockType");
try { }
fd = Os.socket(OsConstants.AF_UNIX, osType, 0); try {
mFdCreatedInternally = true; fd = Os.socket(OsConstants.AF_UNIX, osType, 0);
} catch (ErrnoException e) { mFdCreatedInternally = true;
e.rethrowAsIOException(); } catch (ErrnoException e) {
} e.rethrowAsIOException();
} }
} }