xref: /aosp_15_r20/tools/netsim/src/frontend/server_response_writable.h (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
1*cf78ab8cSAndroid Build Coastguard Worker // Copyright 2022 The Android Open Source Project
2*cf78ab8cSAndroid Build Coastguard Worker //
3*cf78ab8cSAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
4*cf78ab8cSAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
5*cf78ab8cSAndroid Build Coastguard Worker // You may obtain a copy of the License at
6*cf78ab8cSAndroid Build Coastguard Worker //
7*cf78ab8cSAndroid Build Coastguard Worker //      http://www.apache.org/licenses/LICENSE-2.0
8*cf78ab8cSAndroid Build Coastguard Worker //
9*cf78ab8cSAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*cf78ab8cSAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
11*cf78ab8cSAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*cf78ab8cSAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
13*cf78ab8cSAndroid Build Coastguard Worker // limitations under the License.
14*cf78ab8cSAndroid Build Coastguard Worker 
15*cf78ab8cSAndroid Build Coastguard Worker #pragma once
16*cf78ab8cSAndroid Build Coastguard Worker #include <string>
17*cf78ab8cSAndroid Build Coastguard Worker 
18*cf78ab8cSAndroid Build Coastguard Worker #include "grpcpp/support/sync_stream.h"
19*cf78ab8cSAndroid Build Coastguard Worker #include "netsim/frontend.pb.h"
20*cf78ab8cSAndroid Build Coastguard Worker #include "rust/cxx.h"
21*cf78ab8cSAndroid Build Coastguard Worker 
22*cf78ab8cSAndroid Build Coastguard Worker namespace netsim {
23*cf78ab8cSAndroid Build Coastguard Worker namespace frontend {
24*cf78ab8cSAndroid Build Coastguard Worker 
25*cf78ab8cSAndroid Build Coastguard Worker /// The C++ definition of the CxxServerResponseWriter interface for CXX.
26*cf78ab8cSAndroid Build Coastguard Worker class CxxServerResponseWriter {
27*cf78ab8cSAndroid Build Coastguard Worker  public:
CxxServerResponseWriter()28*cf78ab8cSAndroid Build Coastguard Worker   CxxServerResponseWriter() {};
CxxServerResponseWriter(grpc::ServerWriter<netsim::frontend::GetCaptureResponse> * grpc_writer_)29*cf78ab8cSAndroid Build Coastguard Worker   CxxServerResponseWriter(
30*cf78ab8cSAndroid Build Coastguard Worker       grpc::ServerWriter<netsim::frontend::GetCaptureResponse> *grpc_writer_) {
31*cf78ab8cSAndroid Build Coastguard Worker   };
32*cf78ab8cSAndroid Build Coastguard Worker   virtual ~CxxServerResponseWriter() = default;
33*cf78ab8cSAndroid Build Coastguard Worker   virtual void put_error(unsigned int error_code,
34*cf78ab8cSAndroid Build Coastguard Worker                          const std::string &response) const = 0;
35*cf78ab8cSAndroid Build Coastguard Worker   virtual void put_ok_with_length(const std::string &mime_type,
36*cf78ab8cSAndroid Build Coastguard Worker                                   std::size_t length) const = 0;
37*cf78ab8cSAndroid Build Coastguard Worker   virtual void put_chunk(rust::Slice<const uint8_t> chunk) const = 0;
38*cf78ab8cSAndroid Build Coastguard Worker   virtual void put_ok(const std::string &mime_type,
39*cf78ab8cSAndroid Build Coastguard Worker                       const std::string &body) const = 0;
40*cf78ab8cSAndroid Build Coastguard Worker };
41*cf78ab8cSAndroid Build Coastguard Worker 
42*cf78ab8cSAndroid Build Coastguard Worker }  // namespace frontend
43*cf78ab8cSAndroid Build Coastguard Worker }  // namespace netsim
44