| 241 | } |
| 242 | |
| 243 | std::shared_ptr<void> |
| 244 | BundleContext::GetService(ServiceReferenceBase const& reference) |
| 245 | { |
| 246 | if (!reference) |
| 247 | { |
| 248 | throw std::invalid_argument("Default constructed ServiceReference is not a " |
| 249 | "valid input to GetService()"); |
| 250 | } |
| 251 | |
| 252 | if (!d) |
| 253 | { |
| 254 | throw cppmicroservices::IllegalStateException("The bundle context is no longer valid"); |
| 255 | } |
| 256 | |
| 257 | d->CheckValid(); |
| 258 | auto b = GetAndCheckBundlePrivate(d); |
| 259 | auto serviceHolder = new ServiceHolder<void>(b, reference, reference.d.Load()->GetService(b.get()), nullptr); |
| 260 | std::shared_ptr<ServiceHolder<void>> h(serviceHolder, CustomServiceDeleter { serviceHolder }); |
| 261 | return std::shared_ptr<void>(h, h->service.get()); |
| 262 | } |
| 263 | |
| 264 | InterfaceMapConstPtr |
| 265 | BundleContext::GetService(ServiceReferenceU const& reference) |
no test coverage detected