@@ -9,7 +9,7 @@ namespace naoqi
9
9
* This implementation works for NAOqi 2.8 and higher only, using a recent
10
10
* libqi.
11
11
*/
12
- class QiALMemorySubscriber : ALMemorySubscriber
12
+ class QiALMemorySubscriber : public ALMemorySubscriber
13
13
{
14
14
public:
15
15
QiALMemorySubscriber (qi::AnyObject subscriber, qi::SignalLink link_id)
@@ -22,16 +22,16 @@ class QiALMemorySubscriber : ALMemorySubscriber
22
22
int link_id = _link_id.swap (0 );
23
23
if (link_id == 0 )
24
24
{
25
- return ;
25
+ return qi::Future< void >( nullptr ) ;
26
26
}
27
27
28
- _subscriber-> disconnect (link_id). value ( );
28
+ return _subscriber. disconnect (link_id);
29
29
}
30
30
31
31
private:
32
32
qi::AnyObject _subscriber;
33
33
qi::Atomic<qi::SignalLink> _link_id;
34
- }
34
+ };
35
35
36
36
/* *
37
37
* Subscribes to an ALMemory event by registering a service with a callback.
@@ -40,7 +40,7 @@ class QiALMemorySubscriber : ALMemorySubscriber
40
40
* This implementation is the only one compatible when connecting to NAOqi 2.5
41
41
* from a recent libqi.
42
42
*/
43
- class LegacyALMemorySubscriber : ALMemorySubscriber
43
+ class LegacyALMemorySubscriber : public ALMemorySubscriber
44
44
{
45
45
public:
46
46
LegacyALMemorySubscriber (qi::SessionPtr session, int service_id)
@@ -53,16 +53,16 @@ class LegacyALMemorySubscriber : ALMemorySubscriber
53
53
int service_id = _service_id.swap (0 );
54
54
if (service_id == 0 )
55
55
{
56
- return ;
56
+ return qi::Future< void >( nullptr ) ;
57
57
}
58
58
59
- _session->unregisterService (service_id). value ( );
59
+ return _session->unregisterService (service_id);
60
60
}
61
61
62
62
private:
63
63
qi::SessionPtr _session;
64
64
qi::Atomic<int > _service_id;
65
- }
65
+ };
66
66
67
67
/* *
68
68
* A service dedicated to receive ALMemory events and forward them to an
@@ -77,7 +77,7 @@ class ALMemorySubscriberService
77
77
}
78
78
79
79
void onEvent (const std::string& /* key*/ , const qi::AnyValue& value,
80
- const AL::ALValue & /* message */ )
80
+ const qi::AnyValue & /* message */ )
81
81
{
82
82
_callback (value);
83
83
}
@@ -96,7 +96,7 @@ subscribe(const robot::NaoqiVersion& naoqi_version, qi::SessionPtr session,
96
96
const std::string& key, std::function<void (qi::AnyValue)> callback)
97
97
{
98
98
auto memory = session->service (" ALMemory" ).value ();
99
- if (helpers::driver::isNaoqiVersionLesser (naoqi_version_ , 2 , 8 ))
99
+ if (helpers::driver::isNaoqiVersionLesser (naoqi_version , 2 , 8 ))
100
100
{
101
101
// Create one service per subscription.
102
102
auto subscriber_service =
@@ -116,7 +116,7 @@ subscribe(const robot::NaoqiVersion& naoqi_version, qi::SessionPtr session,
116
116
}
117
117
else
118
118
{
119
- auto qi_subscriber = memory-> subscribe ( key). value ( );
119
+ auto qi_subscriber = memory. call <qi::AnyObject>( " subscribe " , key);
120
120
auto signal_link =
121
121
qi_subscriber.connect (" signal" , std::move (callback)).value ();
122
122
return std::make_unique<QiALMemorySubscriber>(std::move (qi_subscriber),
0 commit comments