Как определить службу gRP C, которая обрабатывает любой вызов? - PullRequest
1 голос
/ 21 февраля 2020

Я пытаюсь сделать реверс-инжиниринг, пытаясь понять, какие сервисы называются среди нескольких файлов .proto. У меня вопрос, возможно ли реализовать на сервере службу, которая обрабатывает все вызовы и дает мне информацию о том, какие функции и службы были вызваны.

Пример:

protocol.proto

syntax = "proto3";

package greating;

message PersonRequest {
    string name = 1;
    int32 age = 2;
}

message PersonResponse {
    string message = 1;
}

service GreatingService {
    rpc helloPerson (PersonRequest) returns (PersonResponse);
} 

service WarningService {
    rpc attentionPerson (PersonRequest) returns (PersonResponse);
}

сервер. js

const packageDefinition = protoLoader.loadSync("greating.proto");
const greatingProto = grpc.loadPackageDefinition(packageDefinition);

var server = new grpc.Server();

server.addService(greatingProto.greating.GreatingService.service, {
    helloPerson: function(call, callback) {
        let response = `Hello ${call.request.name}! You're ${call.request.age} years old`;

        return callback(null, { message: response });
    }
});

server.addService(greatingProto.greating.WarningService.service, {
    helloPerson: function(call, callback) {

        let response = `Attention ${call.request.name}! You're  ${call.request.age} years left to live`;

        return callback(null, { message: response });
    }
});

Я хочу реализовать третью функцию, которая обрабатывает как (все) вызовы, так и отображает, какая служба была вызвана. Примерно так:

server.addService("*", {
    function(call, callback) {
        let response = `The service ${call.service}, function ${call.function} was called.`;

        return callback(null, { message: response });
    }
});

Есть ли способ сделать это?

Спасибо.

1 Ответ

1 голос
/ 24 февраля 2020

Нет, grp c не поддерживает обработчики методов подстановочных знаков или любой другой способ обработки каждого входящего запроса с помощью одного обработчика.

...