blob: e9662fdfba54fa29a01986c934ccee5645c1e186 [file] [log] [blame]
// Copyright (C) 2019 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.
import {TRACE_SUFFIX} from '../common/constants';
import {ConsumerPortResponse} from './consumer_port_types';
export type ErrorCallback = (_: string) => void;
export type StatusCallback = (_: string) => void;
export abstract class RpcConsumerPort {
// The responses of the call invocations should be sent through this listener.
// This is done by the 3 "send" methods in this abstract class.
private consumerPortListener: Consumer;
protected constructor(consumerPortListener: Consumer) {
this.consumerPortListener = consumerPortListener;
}
// RequestData is the proto representing the arguments of the function call.
abstract handleCommand(methodName: string, requestData: Uint8Array): void;
sendMessage(data: ConsumerPortResponse) {
this.consumerPortListener.onConsumerPortResponse(data);
}
sendErrorMessage(message: string) {
this.consumerPortListener.onError(message);
}
sendStatus(status: string) {
this.consumerPortListener.onStatus(status);
}
// Allows the recording controller to customise the suffix added to recorded
// traces when they are downloaded. In the general case this will be
// .perfetto-trace however if the trace is recorded compressed if could be
// .perfetto-trace.gz etc.
getRecordedTraceSuffix(): string {
return TRACE_SUFFIX;
}
}
export interface Consumer {
onConsumerPortResponse(data: ConsumerPortResponse): void;
onError: ErrorCallback;
onStatus: StatusCallback;
}