summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/am/ConnectionRecord.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/core/java/com/android/server/am/ConnectionRecord.java')
-rw-r--r--services/core/java/com/android/server/am/ConnectionRecord.java110
1 files changed, 110 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ConnectionRecord.java b/services/core/java/com/android/server/am/ConnectionRecord.java
new file mode 100644
index 0000000..423e540
--- /dev/null
+++ b/services/core/java/com/android/server/am/ConnectionRecord.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2006 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 com.android.server.am;
+
+import android.app.IServiceConnection;
+import android.app.PendingIntent;
+import android.content.Context;
+
+import java.io.PrintWriter;
+
+/**
+ * Description of a single binding to a service.
+ */
+final class ConnectionRecord {
+ final AppBindRecord binding; // The application/service binding.
+ final ActivityRecord activity; // If non-null, the owning activity.
+ final IServiceConnection conn; // The client connection.
+ final int flags; // Binding options.
+ final int clientLabel; // String resource labeling this client.
+ final PendingIntent clientIntent; // How to launch the client.
+ String stringName; // Caching of toString.
+ boolean serviceDead; // Well is it?
+
+ void dump(PrintWriter pw, String prefix) {
+ pw.println(prefix + "binding=" + binding);
+ if (activity != null) {
+ pw.println(prefix + "activity=" + activity);
+ }
+ pw.println(prefix + "conn=" + conn.asBinder()
+ + " flags=0x" + Integer.toHexString(flags));
+ }
+
+ ConnectionRecord(AppBindRecord _binding, ActivityRecord _activity,
+ IServiceConnection _conn, int _flags,
+ int _clientLabel, PendingIntent _clientIntent) {
+ binding = _binding;
+ activity = _activity;
+ conn = _conn;
+ flags = _flags;
+ clientLabel = _clientLabel;
+ clientIntent = _clientIntent;
+ }
+
+ public String toString() {
+ if (stringName != null) {
+ return stringName;
+ }
+ StringBuilder sb = new StringBuilder(128);
+ sb.append("ConnectionRecord{");
+ sb.append(Integer.toHexString(System.identityHashCode(this)));
+ sb.append(" u");
+ sb.append(binding.client.userId);
+ sb.append(' ');
+ if ((flags&Context.BIND_AUTO_CREATE) != 0) {
+ sb.append("CR ");
+ }
+ if ((flags&Context.BIND_DEBUG_UNBIND) != 0) {
+ sb.append("DBG ");
+ }
+ if ((flags&Context.BIND_NOT_FOREGROUND) != 0) {
+ sb.append("!FG ");
+ }
+ if ((flags&Context.BIND_ABOVE_CLIENT) != 0) {
+ sb.append("ABCLT ");
+ }
+ if ((flags&Context.BIND_ALLOW_OOM_MANAGEMENT) != 0) {
+ sb.append("OOM ");
+ }
+ if ((flags&Context.BIND_WAIVE_PRIORITY) != 0) {
+ sb.append("WPRI ");
+ }
+ if ((flags&Context.BIND_IMPORTANT) != 0) {
+ sb.append("IMP ");
+ }
+ if ((flags&Context.BIND_ADJUST_WITH_ACTIVITY) != 0) {
+ sb.append("ACT ");
+ }
+ if ((flags&Context.BIND_VISIBLE) != 0) {
+ sb.append("VIS ");
+ }
+ if ((flags&Context.BIND_SHOWING_UI) != 0) {
+ sb.append("UI ");
+ }
+ if ((flags&Context.BIND_NOT_VISIBLE) != 0) {
+ sb.append("!VIS ");
+ }
+ if (serviceDead) {
+ sb.append("DEAD ");
+ }
+ sb.append(binding.service.shortName);
+ sb.append(":@");
+ sb.append(Integer.toHexString(System.identityHashCode(conn.asBinder())));
+ sb.append('}');
+ return stringName = sb.toString();
+ }
+}