/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.
 *
 */

syntax = "proto3";

package skywalking.v3;

option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
option csharp_namespace = "SkyWalking.NetworkProtocol.V3";
option go_package = "skywalking.apache.org/repo/goapi/collect/language/agent/v3";

import "common/Common.proto";

service CLRMetricReportService {
    rpc collect (CLRMetricCollection) returns (Commands) {
    }
}

message CLRMetricCollection {
    repeated CLRMetric metrics = 1;
    string service = 2;
    string serviceInstance = 3;
}

message CLRMetric {
    int64 time = 1;
    CPU cpu = 2;
    ClrGC gc = 3;
    ClrThread thread = 4;
}

message ClrGC {
    int64 Gen0CollectCount = 1;
    int64 Gen1CollectCount = 2;
    int64 Gen2CollectCount = 3;
    int64 HeapMemory = 4;
}

message ClrThread {
    int32 AvailableCompletionPortThreads = 1;
    int32 AvailableWorkerThreads = 2;
    int32 MaxCompletionPortThreads = 3;
    int32 MaxWorkerThreads = 4;
}
