// GENERATED CODE -- DO NOT EDIT!

// Original file comments:
//
// 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.
//
//
'use strict';
var grpc = require('@grpc/grpc-js');
var profile_Profile_pb = require('../profile/Profile_pb.js');
var common_Common_pb = require('../common/Common_pb.js');

function serialize_skywalking_v3_Commands(arg) {
  if (!(arg instanceof common_Common_pb.Commands)) {
    throw new Error('Expected argument of type skywalking.v3.Commands');
  }
  return Buffer.from(arg.serializeBinary());
}

function deserialize_skywalking_v3_Commands(buffer_arg) {
  return common_Common_pb.Commands.deserializeBinary(new Uint8Array(buffer_arg));
}

function serialize_skywalking_v3_ProfileTaskCommandQuery(arg) {
  if (!(arg instanceof profile_Profile_pb.ProfileTaskCommandQuery)) {
    throw new Error('Expected argument of type skywalking.v3.ProfileTaskCommandQuery');
  }
  return Buffer.from(arg.serializeBinary());
}

function deserialize_skywalking_v3_ProfileTaskCommandQuery(buffer_arg) {
  return profile_Profile_pb.ProfileTaskCommandQuery.deserializeBinary(new Uint8Array(buffer_arg));
}

function serialize_skywalking_v3_ProfileTaskFinishReport(arg) {
  if (!(arg instanceof profile_Profile_pb.ProfileTaskFinishReport)) {
    throw new Error('Expected argument of type skywalking.v3.ProfileTaskFinishReport');
  }
  return Buffer.from(arg.serializeBinary());
}

function deserialize_skywalking_v3_ProfileTaskFinishReport(buffer_arg) {
  return profile_Profile_pb.ProfileTaskFinishReport.deserializeBinary(new Uint8Array(buffer_arg));
}

function serialize_skywalking_v3_ThreadSnapshot(arg) {
  if (!(arg instanceof profile_Profile_pb.ThreadSnapshot)) {
    throw new Error('Expected argument of type skywalking.v3.ThreadSnapshot');
  }
  return Buffer.from(arg.serializeBinary());
}

function deserialize_skywalking_v3_ThreadSnapshot(buffer_arg) {
  return profile_Profile_pb.ThreadSnapshot.deserializeBinary(new Uint8Array(buffer_arg));
}


var ProfileTaskService = exports.ProfileTaskService = {
  // query all sniffer need to execute profile task commands
getProfileTaskCommands: {
    path: '/skywalking.v3.ProfileTask/getProfileTaskCommands',
    requestStream: false,
    responseStream: false,
    requestType: profile_Profile_pb.ProfileTaskCommandQuery,
    responseType: common_Common_pb.Commands,
    requestSerialize: serialize_skywalking_v3_ProfileTaskCommandQuery,
    requestDeserialize: deserialize_skywalking_v3_ProfileTaskCommandQuery,
    responseSerialize: serialize_skywalking_v3_Commands,
    responseDeserialize: deserialize_skywalking_v3_Commands,
  },
  // collect dumped thread snapshot
collectSnapshot: {
    path: '/skywalking.v3.ProfileTask/collectSnapshot',
    requestStream: true,
    responseStream: false,
    requestType: profile_Profile_pb.ThreadSnapshot,
    responseType: common_Common_pb.Commands,
    requestSerialize: serialize_skywalking_v3_ThreadSnapshot,
    requestDeserialize: deserialize_skywalking_v3_ThreadSnapshot,
    responseSerialize: serialize_skywalking_v3_Commands,
    responseDeserialize: deserialize_skywalking_v3_Commands,
  },
  // report profiling task finished
reportTaskFinish: {
    path: '/skywalking.v3.ProfileTask/reportTaskFinish',
    requestStream: false,
    responseStream: false,
    requestType: profile_Profile_pb.ProfileTaskFinishReport,
    responseType: common_Common_pb.Commands,
    requestSerialize: serialize_skywalking_v3_ProfileTaskFinishReport,
    requestDeserialize: deserialize_skywalking_v3_ProfileTaskFinishReport,
    responseSerialize: serialize_skywalking_v3_Commands,
    responseDeserialize: deserialize_skywalking_v3_Commands,
  },
};

exports.ProfileTaskClient = grpc.makeGenericClientConstructor(ProfileTaskService, 'ProfileTask');
