diff --git a/Vcn/service-b/Android.bp b/Vcn/service-b/Android.bp index aad534c328..e9882ae030 100644 --- a/Vcn/service-b/Android.bp +++ b/Vcn/service-b/Android.bp @@ -52,8 +52,10 @@ java_library { filegroup { name: "service-vcn-sources", - srcs: ["src/**/*.java"], - path: "src", + srcs: [ + "src/**/*.java", + ":statslog-vcn-java-gen", + ], visibility: [ "//packages/modules/Connectivity/service-b", ], @@ -75,6 +77,7 @@ java_defaults { "framework-connectivity-pre-jarjar", "framework-connectivity-t-pre-jarjar", "framework-connectivity-b-pre-jarjar", + "framework-statsd.stubs.module_lib", "framework-wifi.stubs.module_lib", "keepanno-annotations", "modules-utils-statemachine", @@ -115,3 +118,10 @@ java_library { "//apex_available:platform", ], } + +genrule { + name: "statslog-vcn-java-gen", + tools: ["stats-log-api-gen"], + cmd: "$(location stats-log-api-gen) --java $(out) --module vcn --javaPackage com.android.server.vcn.metrics --javaClass VcnStatsLog", + out: ["com/android/server/vcn/metrics/VcnStatsLog.java"], +} diff --git a/Vcn/service-b/src/com/android/server/vcn/metrics/VcnMetrics.java b/Vcn/service-b/src/com/android/server/vcn/metrics/VcnMetrics.java new file mode 100644 index 0000000000..a5efddd5e4 --- /dev/null +++ b/Vcn/service-b/src/com/android/server/vcn/metrics/VcnMetrics.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2025 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.vcn.metrics; + +import static com.android.server.vcn.metrics.VcnStatsLog.VCN_GATEWAY_CONNECTION_STATE_CHANGED__GW_TEARDOWN_REASON__GATEWAY_TEARDOWN_REASON_NONE; + +/** Utility class for logging VCN metrics. */ +public class VcnMetrics { + + private static final int GATEWAY_TEARDOWN_REASON_NONE = + VCN_GATEWAY_CONNECTION_STATE_CHANGED__GW_TEARDOWN_REASON__GATEWAY_TEARDOWN_REASON_NONE; + + /** Log an atom when a VcnGatewayConnection has entered safe mode. */ + public void logEnterSafeMode(int gatewayConnectionId) { + VcnStatsLog.write( + VcnStatsLog.VCN_GATEWAY_CONNECTION_STATE_CHANGED, + gatewayConnectionId, + GATEWAY_TEARDOWN_REASON_NONE, + true /* isInSafeMode */); + } + + /** Log an atom when a VcnGatewayConnection has exited safe mode. */ + public void logExitSafeMode(int gatewayConnectionId) { + VcnStatsLog.write( + VcnStatsLog.VCN_GATEWAY_CONNECTION_STATE_CHANGED, + gatewayConnectionId, + GATEWAY_TEARDOWN_REASON_NONE, + false /* isInSafeMode */); + } + + /** Log an atom when VCN network has been validated. */ + public void logVcnNetworkValidated(int gatewayConnectionId, int networkId) { + VcnStatsLog.write( + VcnStatsLog.VCN_NETWORK_STATE_CHANGED, + gatewayConnectionId, + networkId, + true /* isConnected */, + true /* isValidated */); + } + + /** Log an atom when VCN network has been not validated. */ + public void logVcnNetworkNotValidated(int gatewayConnectionId, int networkId) { + VcnStatsLog.write( + VcnStatsLog.VCN_NETWORK_STATE_CHANGED, + gatewayConnectionId, + networkId, + true /* isConnected */, + false /* isValidated */); + } +}