@@ -17,17 +17,7 @@ using namespace lsl;
1717* The recommended default value is 5.0.
1818*/
1919LIBLSL_C_API lsl_continuous_resolver lsl_create_continuous_resolver (double forget_after) {
20- try {
21- // create a new resolver
22- resolver_impl *resolver = new resolver_impl ();
23- // start it with the given query
24- std::ostringstream os; os << " session_id='" << api_config::get_instance ()->session_id () << " '" ;
25- resolver->resolve_continuous (os.str (),forget_after);
26- return resolver;
27- } catch (std::exception &e) {
28- LOG_F (ERROR, " Error while creating a continuous_resolver: %s" , e.what ());
29- return nullptr ;
30- }
20+ return resolver_impl::create_resolver (forget_after);
3121}
3222
3323/* *
@@ -40,17 +30,7 @@ LIBLSL_C_API lsl_continuous_resolver lsl_create_continuous_resolver(double forge
4030* The recommended default value is 5.0.
4131*/
4232LIBLSL_C_API lsl_continuous_resolver lsl_create_continuous_resolver_byprop (const char *prop, const char *value, double forget_after) {
43- try {
44- // create a new resolver
45- resolver_impl *resolver = new resolver_impl ();
46- // start it with the given query
47- std::ostringstream os; os << " session_id='" << api_config::get_instance ()->session_id () << " ' and " << prop << " ='" << value << " '" ;
48- resolver->resolve_continuous (os.str (),forget_after);
49- return resolver;
50- } catch (std::exception &e) {
51- LOG_F (ERROR, " Error while creating a continuous_resolver: %s" , e.what ());
52- return nullptr ;
53- }
33+ return resolver_impl::create_resolver (forget_after, prop, value);
5434}
5535
5636/* *
@@ -62,17 +42,7 @@ LIBLSL_C_API lsl_continuous_resolver lsl_create_continuous_resolver_byprop(const
6242* The recommended default value is 5.0.
6343*/
6444LIBLSL_C_API lsl_continuous_resolver lsl_create_continuous_resolver_bypred (const char *pred, double forget_after) {
65- try {
66- // create a new resolver
67- resolver_impl *resolver = new resolver_impl ();
68- // start it with the given query
69- std::ostringstream os; os << " session_id='" << api_config::get_instance ()->session_id () << " ' and " << pred;
70- resolver->resolve_continuous (os.str (),forget_after);
71- return resolver;
72- } catch (std::exception &e) {
73- LOG_F (ERROR, " Error while creating a continuous_resolver: %s" , e.what ());
74- return nullptr ;
75- }
45+ return resolver_impl::create_resolver (forget_after, pred, nullptr );
7646}
7747
7848/* *
@@ -159,12 +129,8 @@ LIBLSL_C_API int32_t lsl_resolve_all(lsl_streaminfo *buffer, uint32_t buffer_ele
159129*/
160130LIBLSL_C_API int32_t lsl_resolve_byprop (lsl_streaminfo *buffer, uint32_t buffer_elements, const char *prop, const char *value, int32_t minimum, double timeout) {
161131 try {
162- // create a new resolver
163- resolver_impl resolver;
164- // build a new query.
165- std::ostringstream os; os << " session_id='" << api_config::get_instance ()->session_id () << " ' and " << prop << " ='" << value << " '" ;
166- // invoke it
167- std::vector<stream_info_impl> tmp = resolver.resolve_oneshot (os.str (),minimum,timeout);
132+ std::string query{resolver_impl::build_query (prop, value)};
133+ auto tmp = resolver_impl ().resolve_oneshot (query, minimum, timeout);
168134 // allocate new stream_info_impl's and assign to the buffer
169135 uint32_t result = buffer_elements<tmp.size () ? buffer_elements : (uint32_t )tmp.size ();
170136 for (uint32_t k = 0 ; k < result; k++) buffer[k] = new stream_info_impl (tmp[k]);
@@ -192,12 +158,8 @@ LIBLSL_C_API int32_t lsl_resolve_byprop(lsl_streaminfo *buffer, uint32_t buffer_
192158*/
193159LIBLSL_C_API int32_t lsl_resolve_bypred (lsl_streaminfo *buffer, uint32_t buffer_elements, const char *pred, int32_t minimum, double timeout) {
194160 try {
195- // create a new resolver
196- resolver_impl resolver;
197- // build a new query.
198- std::ostringstream os; os << " session_id='" << api_config::get_instance ()->session_id () << " ' and " << pred;
199- // invoke it
200- std::vector<stream_info_impl> tmp = resolver.resolve_oneshot (os.str (),minimum,timeout);
161+ std::string query{resolver_impl::build_query (pred)};
162+ auto tmp = resolver_impl ().resolve_oneshot (query, minimum, timeout);
201163 // allocate new stream_info_impl's and assign to the buffer
202164 uint32_t result = buffer_elements<tmp.size () ? buffer_elements : (uint32_t )tmp.size ();
203165 for (uint32_t k = 0 ; k < result; k++) buffer[k] = new stream_info_impl (tmp[k]);
0 commit comments