android.util.proto.ProtoOutputStream#write ( )源码实例Demo

下面列出了android.util.proto.ProtoOutputStream#write ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

/**
 * Dump all settings of a user as a proto buf.
 *
 * @param settingsRegistry
 * @param user The user the settings should be dumped for
 * @param proto The proto buf stream to dump to
 */
private static void dumpProtoUserSettingsLocked(
        SettingsProvider.SettingsRegistry settingsRegistry,
        @NonNull UserHandle user,
        @NonNull ProtoOutputStream proto) {
    proto.write(UserSettingsProto.USER_ID, user.getIdentifier());

    SettingsState secureSettings = settingsRegistry.getSettingsLocked(
            SettingsProvider.SETTINGS_TYPE_SECURE, user.getIdentifier());
    long secureSettingsToken = proto.start(UserSettingsProto.SECURE_SETTINGS);
    dumpProtoSecureSettingsLocked(secureSettings, proto);
    proto.end(secureSettingsToken);

    SettingsState systemSettings = settingsRegistry.getSettingsLocked(
            SettingsProvider.SETTINGS_TYPE_SYSTEM, user.getIdentifier());
    long systemSettingsToken = proto.start(UserSettingsProto.SYSTEM_SETTINGS);
    dumpProtoSystemSettingsLocked(systemSettings, proto);
    proto.end(systemSettingsToken);
}
 
源代码2 项目: android_9.0.0_r45   文件: ServiceRecord.java
public void writeToProto(ProtoOutputStream proto, long fieldId, long now) {
    long token = proto.start(fieldId);
    proto.write(ServiceRecordProto.StartItem.ID, id);
    ProtoUtils.toDuration(proto,
            ServiceRecordProto.StartItem.DURATION, deliveredTime, now);
    proto.write(ServiceRecordProto.StartItem.DELIVERY_COUNT, deliveryCount);
    proto.write(ServiceRecordProto.StartItem.DONE_EXECUTING_COUNT, doneExecutingCount);
    if (intent != null) {
        intent.writeToProto(proto, ServiceRecordProto.StartItem.INTENT, true, true,
                true, false);
    }
    if (neededGrants != null) {
        neededGrants.writeToProto(proto, ServiceRecordProto.StartItem.NEEDED_GRANTS);
    }
    if (uriPermissions != null) {
        uriPermissions.writeToProto(proto, ServiceRecordProto.StartItem.URI_PERMISSIONS);
    }
    proto.end(token);
}
 
源代码3 项目: android_9.0.0_r45   文件: ReceiverList.java
void writeToProto(ProtoOutputStream proto, long fieldId) {
    long token = proto.start(fieldId);
    app.writeToProto(proto, ReceiverListProto.APP);
    proto.write(ReceiverListProto.PID, pid);
    proto.write(ReceiverListProto.UID, uid);
    proto.write(ReceiverListProto.USER, userId);
    if (curBroadcast != null) {
        curBroadcast.writeToProto(proto, ReceiverListProto.CURRENT);
    }
    proto.write(ReceiverListProto.LINKED_TO_DEATH, linkedToDeath);
    final int N = size();
    for (int i=0; i<N; i++) {
        BroadcastFilter bf = get(i);
        bf.writeToProto(proto, ReceiverListProto.FILTERS);
    }
    proto.write(ReceiverListProto.HEX_HASH, Integer.toHexString(System.identityHashCode(this)));
    proto.end(token);
}
 
源代码4 项目: android_9.0.0_r45   文件: WindowTracing.java
void startTrace(@Nullable PrintWriter pw) throws IOException {
    if (IS_USER){
        logAndPrintln(pw, "Error: Tracing is not supported on user builds.");
        return;
    }
    synchronized (mLock) {
        logAndPrintln(pw, "Start tracing to " + mTraceFile + ".");
        mWriteQueue.clear();
        mTraceFile.delete();
        try (OutputStream os = new FileOutputStream(mTraceFile)) {
            mTraceFile.setReadable(true, false);
            ProtoOutputStream proto = new ProtoOutputStream(os);
            proto.write(MAGIC_NUMBER, MAGIC_NUMBER_VALUE);
            proto.flush();
        }
        mEnabled = mEnabledLockFree = true;
    }
}
 
源代码5 项目: android_9.0.0_r45   文件: AlarmManagerService.java
public void writeToProto(ProtoOutputStream proto, long fieldId) {
    final long token = proto.start(fieldId);

    proto.write(InFlightProto.UID, mUid);
    proto.write(InFlightProto.TAG, mTag);
    proto.write(InFlightProto.WHEN_ELAPSED_MS, mWhenElapsed);
    proto.write(InFlightProto.ALARM_TYPE, mAlarmType);
    if (mPendingIntent != null) {
        mPendingIntent.writeToProto(proto, InFlightProto.PENDING_INTENT);
    }
    if (mBroadcastStats != null) {
        mBroadcastStats.writeToProto(proto, InFlightProto.BROADCAST_STATS);
    }
    if (mFilterStats != null) {
        mFilterStats.writeToProto(proto, InFlightProto.FILTER_STATS);
    }
    if (mWorkSource != null) {
        mWorkSource.writeToProto(proto, InFlightProto.WORK_SOURCE);
    }

    proto.end(token);
}
 
源代码6 项目: android_9.0.0_r45   文件: IntentResolver.java
void writeProtoMap(ProtoOutputStream proto, long fieldId, ArrayMap<String, F[]> map) {
    int N = map.size();
    for (int mapi = 0; mapi < N; mapi++) {
        long token = proto.start(fieldId);
        proto.write(IntentResolverProto.ArrayMapEntry.KEY, map.keyAt(mapi));
        for (F f : map.valueAt(mapi)) {
            if (f != null) {
                proto.write(IntentResolverProto.ArrayMapEntry.VALUES, f.toString());
            }
        }
        proto.end(token);
    }
}
 
源代码7 项目: android_9.0.0_r45   文件: ActivityRecord.java
public void writeToProto(ProtoOutputStream proto, long fieldId) {
    final long token = proto.start(fieldId);
    super.writeToProto(proto, CONFIGURATION_CONTAINER, false /* trim */);
    writeIdentifierToProto(proto, IDENTIFIER);
    proto.write(STATE, mState.toString());
    proto.write(VISIBLE, visible);
    proto.write(FRONT_OF_TASK, frontOfTask);
    if (app != null) {
        proto.write(PROC_ID, app.pid);
    }
    proto.write(TRANSLUCENT, !fullscreen);
    proto.end(token);
}
 
源代码8 项目: android_9.0.0_r45   文件: BatteryController.java
@Override
public void dumpControllerStateLocked(ProtoOutputStream proto, long fieldId,
        Predicate<JobStatus> predicate) {
    final long token = proto.start(fieldId);
    final long mToken = proto.start(StateControllerProto.BATTERY);

    proto.write(StateControllerProto.BatteryController.IS_ON_STABLE_POWER,
            mChargeTracker.isOnStablePower());
    proto.write(StateControllerProto.BatteryController.IS_BATTERY_NOT_LOW,
            mChargeTracker.isBatteryNotLow());

    proto.write(StateControllerProto.BatteryController.IS_MONITORING,
            mChargeTracker.isMonitoring());
    proto.write(StateControllerProto.BatteryController.LAST_BROADCAST_SEQUENCE_NUMBER,
            mChargeTracker.getSeq());

    for (int i = 0; i < mTrackedTasks.size(); i++) {
        final JobStatus js = mTrackedTasks.valueAt(i);
        if (!predicate.test(js)) {
            continue;
        }
        final long jsToken = proto.start(StateControllerProto.BatteryController.TRACKED_JOBS);
        js.writeToShortProto(proto, StateControllerProto.BatteryController.TrackedJob.INFO);
        proto.write(StateControllerProto.BatteryController.TrackedJob.SOURCE_UID,
                js.getSourceUid());
        proto.end(jsToken);
    }

    proto.end(mToken);
    proto.end(token);
}
 
源代码9 项目: android_9.0.0_r45   文件: JobStatus.java
/**
 * Convenience function to dump data that identifies a job uniquely to proto. This is intended
 * to mimic {@link #toShortString}.
 */
public void writeToShortProto(ProtoOutputStream proto, long fieldId) {
    final long token = proto.start(fieldId);

    proto.write(JobStatusShortInfoProto.CALLING_UID, callingUid);
    proto.write(JobStatusShortInfoProto.JOB_ID, job.getId());
    proto.write(JobStatusShortInfoProto.BATTERY_NAME, batteryName);

    proto.end(token);
}
 
源代码10 项目: android_9.0.0_r45   文件: JobPackageTracker.java
public void dumpHistory(ProtoOutputStream proto, long fieldId, int filterUid) {
    final int size = mEventIndices.size();
    if (size == 0) {
        return;
    }
    final long token = proto.start(fieldId);

    final long now = sElapsedRealtimeClock.millis();
    for (int i = 0; i < size; i++) {
        final int index = mEventIndices.indexOf(i);
        final int uid = mEventUids[index];
        if (filterUid != -1 && filterUid != UserHandle.getAppId(uid)) {
            continue;
        }
        final int cmd = mEventCmds[index] & EVENT_CMD_MASK;
        if (cmd == EVENT_NULL) {
            continue;
        }
        final long heToken = proto.start(JobPackageHistoryProto.HISTORY_EVENT);

        proto.write(JobPackageHistoryProto.HistoryEvent.EVENT, cmd);
        proto.write(JobPackageHistoryProto.HistoryEvent.TIME_SINCE_EVENT_MS, now - mEventTimes[index]);
        proto.write(JobPackageHistoryProto.HistoryEvent.UID, uid);
        proto.write(JobPackageHistoryProto.HistoryEvent.JOB_ID, mEventJobIds[index]);
        proto.write(JobPackageHistoryProto.HistoryEvent.TAG, mEventTags[index]);
        if (cmd == EVENT_STOP_JOB || cmd == EVENT_STOP_PERIODIC_JOB) {
            proto.write(JobPackageHistoryProto.HistoryEvent.STOP_REASON,
                (mEventCmds[index] & EVENT_STOP_REASON_MASK) >> EVENT_STOP_REASON_SHIFT);
        }

        proto.end(heToken);
    }

    proto.end(token);
}
 
源代码11 项目: android_9.0.0_r45   文件: ActivityRecord.java
void writeIdentifierToProto(ProtoOutputStream proto, long fieldId) {
    final long token = proto.start(fieldId);
    proto.write(HASH_CODE, System.identityHashCode(this));
    proto.write(USER_ID, userId);
    proto.write(TITLE, intent.getComponent().flattenToShortString());
    proto.end(token);
}
 
源代码12 项目: android_9.0.0_r45   文件: BatteryService.java
private void dumpProto(FileDescriptor fd) {
    final ProtoOutputStream proto = new ProtoOutputStream(fd);

    synchronized (mLock) {
        proto.write(BatteryServiceDumpProto.ARE_UPDATES_STOPPED, mUpdatesStopped);
        int batteryPluggedValue = OsProtoEnums.BATTERY_PLUGGED_NONE;
        if (mHealthInfo.chargerAcOnline) {
            batteryPluggedValue = OsProtoEnums.BATTERY_PLUGGED_AC;
        } else if (mHealthInfo.chargerUsbOnline) {
            batteryPluggedValue = OsProtoEnums.BATTERY_PLUGGED_USB;
        } else if (mHealthInfo.chargerWirelessOnline) {
            batteryPluggedValue = OsProtoEnums.BATTERY_PLUGGED_WIRELESS;
        }
        proto.write(BatteryServiceDumpProto.PLUGGED, batteryPluggedValue);
        proto.write(BatteryServiceDumpProto.MAX_CHARGING_CURRENT, mHealthInfo.maxChargingCurrent);
        proto.write(BatteryServiceDumpProto.MAX_CHARGING_VOLTAGE, mHealthInfo.maxChargingVoltage);
        proto.write(BatteryServiceDumpProto.CHARGE_COUNTER, mHealthInfo.batteryChargeCounter);
        proto.write(BatteryServiceDumpProto.STATUS, mHealthInfo.batteryStatus);
        proto.write(BatteryServiceDumpProto.HEALTH, mHealthInfo.batteryHealth);
        proto.write(BatteryServiceDumpProto.IS_PRESENT, mHealthInfo.batteryPresent);
        proto.write(BatteryServiceDumpProto.LEVEL, mHealthInfo.batteryLevel);
        proto.write(BatteryServiceDumpProto.SCALE, BATTERY_SCALE);
        proto.write(BatteryServiceDumpProto.VOLTAGE, mHealthInfo.batteryVoltage);
        proto.write(BatteryServiceDumpProto.TEMPERATURE, mHealthInfo.batteryTemperature);
        proto.write(BatteryServiceDumpProto.TECHNOLOGY, mHealthInfo.batteryTechnology);
    }
    proto.flush();
}
 
源代码13 项目: android_9.0.0_r45   文件: AppBindRecord.java
void writeToProto(ProtoOutputStream proto, long fieldId) {
    long token = proto.start(fieldId);
    proto.write(AppBindRecordProto.SERVICE_NAME, service.shortName);
    proto.write(AppBindRecordProto.CLIENT_PROC_NAME, client.processName);
    final int N = connections.size();
    for (int i=0; i<N; i++) {
        ConnectionRecord conn = connections.valueAt(i);
        proto.write(AppBindRecordProto.CONNECTIONS,
            Integer.toHexString(System.identityHashCode(conn)));
    }
    proto.end(token);
}
 
源代码14 项目: android_9.0.0_r45   文件: Condition.java
/** @hide */
public void writeToProto(ProtoOutputStream proto, long fieldId) {
    final long token = proto.start(fieldId);

    // id is guarantreed not to be null.
    proto.write(ConditionProto.ID, id.toString());
    proto.write(ConditionProto.SUMMARY, summary);
    proto.write(ConditionProto.LINE_1, line1);
    proto.write(ConditionProto.LINE_2, line2);
    proto.write(ConditionProto.ICON, icon);
    proto.write(ConditionProto.STATE, state);
    proto.write(ConditionProto.FLAGS, flags);

    proto.end(token);
}
 
源代码15 项目: android_9.0.0_r45   文件: ManagedServices.java
public void writeToProto(ProtoOutputStream proto, long fieldId, ManagedServices host) {
    final long token = proto.start(fieldId);
    component.writeToProto(proto, ManagedServiceInfoProto.COMPONENT);
    proto.write(ManagedServiceInfoProto.USER_ID, userid);
    proto.write(ManagedServiceInfoProto.SERVICE, service.getClass().getName());
    proto.write(ManagedServiceInfoProto.IS_SYSTEM, isSystem);
    proto.write(ManagedServiceInfoProto.IS_GUEST, isGuest(host));
    proto.end(token);
}
 
源代码16 项目: android_9.0.0_r45   文件: WindowContainer.java
/**
 * Write to a protocol buffer output stream. Protocol buffer message definition is at
 * {@link com.android.server.wm.WindowContainerProto}.
 *
 * @param proto     Stream to write the WindowContainer object to.
 * @param fieldId   Field Id of the WindowContainer as defined in the parent message.
 * @param trim      If true, reduce the amount of data written.
 * @hide
 */
@CallSuper
@Override
public void writeToProto(ProtoOutputStream proto, long fieldId, boolean trim) {
    final long token = proto.start(fieldId);
    super.writeToProto(proto, CONFIGURATION_CONTAINER, trim);
    proto.write(ORIENTATION, mOrientation);
    proto.write(VISIBLE, isVisible());
    mSurfaceAnimator.writeToProto(proto, SURFACE_ANIMATOR);
    proto.end(token);
}
 
源代码17 项目: android_9.0.0_r45   文件: AlarmManagerService.java
public void writeToProto(ProtoOutputStream proto, long fieldId, long nowElapsed,
        long nowRTC) {
    final long token = proto.start(fieldId);

    proto.write(BatchProto.START_REALTIME, start);
    proto.write(BatchProto.END_REALTIME, end);
    proto.write(BatchProto.FLAGS, flags);
    for (Alarm a : alarms) {
        a.writeToProto(proto, BatchProto.ALARMS, nowElapsed, nowRTC);
    }

    proto.end(token);
}
 
void writeToProto(ProtoOutputStream proto, long fieldId) {
    final long token = proto.start(fieldId);
    proto.write(SHOWN, mSurfaceShown);
    proto.write(LAYER, mSurfaceLayer);
    proto.end(token);
}
 
源代码19 项目: android_9.0.0_r45   文件: UserState.java
void writeToProto(ProtoOutputStream proto, long fieldId) {
    final long token = proto.start(fieldId);
    proto.write(UserStateProto.STATE, stateToProtoEnum(state));
    proto.write(UserStateProto.SWITCHING, switching);
    proto.end(token);
}
 
源代码20 项目: android_9.0.0_r45   文件: DiskStatsService.java
private void reportCachedValuesProto(ProtoOutputStream proto) {
    try {
        String jsonString = IoUtils.readFileAsString(DISKSTATS_DUMP_FILE);
        JSONObject json = new JSONObject(jsonString);
        long cachedValuesToken = proto.start(DiskStatsServiceDumpProto.CACHED_FOLDER_SIZES);

        proto.write(DiskStatsCachedValuesProto.AGG_APPS_SIZE_KB,
                json.getLong(DiskStatsFileLogger.APP_SIZE_AGG_KEY));
        proto.write(DiskStatsCachedValuesProto.AGG_APPS_DATA_SIZE_KB,
                json.getLong(DiskStatsFileLogger.APP_DATA_SIZE_AGG_KEY));
        proto.write(DiskStatsCachedValuesProto.AGG_APPS_CACHE_SIZE_KB,
                json.getLong(DiskStatsFileLogger.APP_CACHE_AGG_KEY));
        proto.write(DiskStatsCachedValuesProto.PHOTOS_SIZE_KB,
                json.getLong(DiskStatsFileLogger.PHOTOS_KEY));
        proto.write(DiskStatsCachedValuesProto.VIDEOS_SIZE_KB,
                json.getLong(DiskStatsFileLogger.VIDEOS_KEY));
        proto.write(DiskStatsCachedValuesProto.AUDIO_SIZE_KB,
                json.getLong(DiskStatsFileLogger.AUDIO_KEY));
        proto.write(DiskStatsCachedValuesProto.DOWNLOADS_SIZE_KB,
                json.getLong(DiskStatsFileLogger.DOWNLOADS_KEY));
        proto.write(DiskStatsCachedValuesProto.SYSTEM_SIZE_KB,
                json.getLong(DiskStatsFileLogger.SYSTEM_KEY));
        proto.write(DiskStatsCachedValuesProto.OTHER_SIZE_KB,
                json.getLong(DiskStatsFileLogger.MISC_KEY));

        JSONArray packageNamesArray = json.getJSONArray(DiskStatsFileLogger.PACKAGE_NAMES_KEY);
        JSONArray appSizesArray = json.getJSONArray(DiskStatsFileLogger.APP_SIZES_KEY);
        JSONArray appDataSizesArray = json.getJSONArray(DiskStatsFileLogger.APP_DATA_KEY);
        JSONArray cacheSizesArray = json.getJSONArray(DiskStatsFileLogger.APP_CACHES_KEY);
        final int len = packageNamesArray.length();
        if (len == appSizesArray.length()
                && len == appDataSizesArray.length()
                && len == cacheSizesArray.length()) {
            for (int i = 0; i < len; i++) {
                long packageToken = proto.start(DiskStatsCachedValuesProto.APP_SIZES);

                proto.write(DiskStatsAppSizesProto.PACKAGE_NAME,
                        packageNamesArray.getString(i));
                proto.write(DiskStatsAppSizesProto.APP_SIZE_KB, appSizesArray.getLong(i));
                proto.write(DiskStatsAppSizesProto.APP_DATA_SIZE_KB, appDataSizesArray.getLong(i));
                proto.write(DiskStatsAppSizesProto.CACHE_SIZE_KB, cacheSizesArray.getLong(i));

                proto.end(packageToken);
            }
        } else {
            Slog.wtf(TAG, "Sizes of packageNamesArray, appSizesArray, appDataSizesArray "
                    + " and cacheSizesArray are not the same");
        }

        proto.end(cachedValuesToken);
    } catch (IOException | JSONException e) {
        Log.w(TAG, "exception reading diskstats cache file", e);
    }
}