| /* |
| * Copyright (C) 2017 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. |
| */ |
| #include <jni.h> |
| #include "agent/agent.h" |
| #include "agent/jni_wrappers.h" |
| |
| /** |
| * This is the native implentation for EchoService::sendEchoMessage(String). |
| * This function creates an Event populates the echo data and sends the event |
| * via the AgentService::SendEvent function. |
| */ |
| extern "C" { |
| JNIEXPORT void JNICALL |
| Java_com_android_tools_agent_echo_EchoService_sendEchoMessage( |
| JNIEnv *env, jclass clazz, jstring jmessage) { |
| profiler::JStringWrapper message(env, jmessage); |
| profiler::Agent::Instance().SubmitAgentTasks( |
| {[message](profiler::proto::AgentService::Stub &stub, |
| grpc::ClientContext &ctx) mutable { |
| profiler::proto::SendEventRequest request; |
| // Create Event. |
| auto *event = request.mutable_event(); |
| event->set_is_ended(true); |
| event->set_kind(profiler::proto::Event::ECHO); |
| // Set echo data on event. |
| auto *echo = event->mutable_echo(); |
| echo->set_data(message.get().c_str()); |
| // Send event to daemon via grpc. |
| profiler::proto::EmptyResponse response; |
| return stub.SendEvent(&ctx, request, &response); |
| }}); |
| } |
| } |