@@ -695,7 +695,7 @@ void requireSubFields(const ResolverParams& params)
695695
696696template <>
697697AwaitableResolver ModifiedResult<Object>::convert(
698- AwaitableObject<std::shared_ptr<Object>> result, ResolverParams params)
698+ AwaitableObject<std::shared_ptr<const Object>> result, ResolverParams params)
699699{
700700 requireSubFields (params);
701701
@@ -1378,7 +1378,7 @@ class SubscriptionDefinitionVisitor
13781378{
13791379public:
13801380 SubscriptionDefinitionVisitor (RequestSubscribeParams&& params, FragmentMap&& fragments,
1381- const std::shared_ptr<Object>& subscriptionObject);
1381+ const std::shared_ptr<const Object>& subscriptionObject);
13821382
13831383 const peg::ast_node& getRoot () const ;
13841384 std::shared_ptr<SubscriptionData> getRegistration ();
@@ -1392,15 +1392,15 @@ class SubscriptionDefinitionVisitor
13921392
13931393 RequestSubscribeParams _params;
13941394 FragmentMap _fragments;
1395- const std::shared_ptr<Object>& _subscriptionObject;
1395+ const std::shared_ptr<const Object>& _subscriptionObject;
13961396 SubscriptionName _field;
13971397 response::Value _arguments;
13981398 Directives _fieldDirectives;
13991399 std::shared_ptr<SubscriptionData> _result;
14001400};
14011401
14021402SubscriptionDefinitionVisitor::SubscriptionDefinitionVisitor (RequestSubscribeParams&& params,
1403- FragmentMap&& fragments, const std::shared_ptr<Object>& subscriptionObject)
1403+ FragmentMap&& fragments, const std::shared_ptr<const Object>& subscriptionObject)
14041404 : _params(std::move(params))
14051405 , _fragments(std::move(fragments))
14061406 , _subscriptionObject(subscriptionObject)
@@ -1748,6 +1748,7 @@ response::AwaitableValue Request::resolve(RequestResolveParams params) const
17481748AwaitableSubscribe Request::subscribe (RequestSubscribeParams params)
17491749{
17501750 const auto spThis = shared_from_this ();
1751+ const auto launch = std::move (params.launch );
17511752 std::unique_lock lock { spThis->_subscriptionMutex };
17521753 const auto key = spThis->addSubscription (std::move (params));
17531754 const auto itrOperation = spThis->_operations .find (strSubscription);
@@ -1764,14 +1765,14 @@ AwaitableSubscribe Request::subscribe(RequestSubscribeParams params)
17641765 std::make_shared<FragmentSpreadDirectiveStack>(),
17651766 std::make_shared<FragmentSpreadDirectiveStack>(),
17661767 {},
1767- params. launch ,
1768+ launch,
17681769 };
17691770
17701771 lock.unlock ();
17711772
17721773 try
17731774 {
1774- co_await params. launch ;
1775+ co_await launch;
17751776 co_await operation->resolve (selectionSetParams,
17761777 registration->selection ,
17771778 registration->data ->fragments ,
@@ -1997,10 +1998,10 @@ void Request::removeSubscription(SubscriptionKey key)
19971998 }
19981999}
19992000
2000- std::vector<std::shared_ptr<SubscriptionData>> Request::collectRegistrations (
2001+ std::vector<std::shared_ptr<const SubscriptionData>> Request::collectRegistrations (
20012002 std::string_view field, RequestDeliverFilter&& filter) const noexcept
20022003{
2003- std::vector<std::shared_ptr<SubscriptionData>> registrations;
2004+ std::vector<std::shared_ptr<const SubscriptionData>> registrations;
20042005 const std::lock_guard lock { _subscriptionMutex };
20052006 const auto itrListeners = _listeners.find (field);
20062007
@@ -2016,7 +2017,7 @@ std::vector<std::shared_ptr<SubscriptionData>> Request::collectRegistrations(
20162017 [this ](const auto & key) noexcept {
20172018 const auto itr = _subscriptions.find (key);
20182019
2019- return itr == _subscriptions.end () ? std::shared_ptr<SubscriptionData> {}
2020+ return itr == _subscriptions.end () ? std::shared_ptr<const SubscriptionData> {}
20202021 : itr->second ;
20212022 });
20222023 }
0 commit comments