@@ -503,27 +503,29 @@ class TStreamReadProcessor : public NGRpcService::NLocalGrpc::TContextBase {
503
503
template <typename TResponsePart>
504
504
using TStreamReadProcessorPtr = TIntrusivePtr<TStreamReadProcessor<TResponsePart>>;
505
505
506
- using TFacilityProviderPtr = std::shared_ptr<NGRpcService::IFacilityProvider>;
507
- TFacilityProviderPtr CreateFacilityProviderSameMailbox (TActorContext actorContext, ui64 channelBufferSize);
508
-
509
- using TRpcActorCreator = std::function<void ((std::unique_ptr<NGRpcService::IRequestNoOpCtx> p, const NGRpcService::IFacilityProvider& f))>;
510
-
511
- template <typename TRpc>
512
- TStreamReadProcessorPtr<typename TRpc::TResponse> DoLocalRpcStreamSameMailbox (typename TRpc::TRequest&& proto, const TString& database, const TMaybe<TString>& token, const TMaybe<TString>& requestType, TFacilityProviderPtr facilityProvider, TRpcActorCreator actorCreator, bool internalCall = false ) {
506
+ template <typename TRpc, typename ... TRpcActorArgs>
507
+ TStreamReadProcessorPtr<typename TRpc::TResponse> DoLocalRpcStreamSameMailbox (typename TRpc::TRequest&& proto,
508
+ const TString& database, const TMaybe<TString>& token, const TMaybe<TString>& requestType,
509
+ const TActorContext& ctx, bool internalCall, TRpcActorArgs... args)
510
+ {
513
511
using TCbWrapper = std::function<void (const typename TRpc::TResponse&)>;
514
512
using TLocalRpcStreamCtx = TStreamReadProcessor<typename TRpc::TResponse>;
515
513
516
514
auto localRpcCtx = std::make_shared<TLocalRpcCtx<TRpc, TCbWrapper>>(std::move (proto), [](const typename TRpc::TResponse&) {}, database, token, requestType, internalCall);
517
515
auto localRpcStreamCtx = MakeIntrusive<TLocalRpcStreamCtx>(std::move (localRpcCtx));
518
516
auto localRpcRequest = std::make_unique<TRpc>(localRpcStreamCtx.Get (), [](std::unique_ptr<NGRpcService::IRequestNoOpCtx>, const NGRpcService::IFacilityProvider&) {});
519
- actorCreator (std::move (localRpcRequest), *facilityProvider);
517
+ auto actor = TRpc::CreateRpcActor (localRpcRequest.release (), args...);
518
+ ctx.RegisterWithSameMailbox (actor);
520
519
521
520
return localRpcStreamCtx;
522
521
}
523
522
524
- template <typename TRpc>
525
- TStreamReadProcessorPtr<typename TRpc::TResponse> DoLocalRpcStreamSameMailbox (typename TRpc::TRequest&& proto, const TString& database, const TMaybe<TString>& token, TFacilityProviderPtr facilityProvider, TRpcActorCreator actorCreator, bool internalCall = false ) {
526
- return DoLocalRpcStreamSameMailbox<TRpc>(std::move (proto), database, token, Nothing (), std::move (facilityProvider), std::move (actorCreator), internalCall);
523
+ template <typename TRpc, typename ... TRpcActorArgs>
524
+ TStreamReadProcessorPtr<typename TRpc::TResponse> DoLocalRpcStreamSameMailbox (typename TRpc::TRequest&& proto,
525
+ const TString& database, const TMaybe<TString>& token, const TActorContext& ctx, bool internalCall,
526
+ TRpcActorArgs... args)
527
+ {
528
+ return DoLocalRpcStreamSameMailbox<TRpc>(std::move (proto), database, token, Nothing (), ctx, internalCall, args...);
527
529
}
528
530
529
531
} // namespace NRpcService
0 commit comments