Hi,

if I understood correctly, you seem to think that "UngetService" would unregister the referenced service, but that is not what it does. It tells the registry that you are done "using" the service, after you "got it" via a "GetService" call. This helps the internal registry to keep track of the client currently using a particular service.

Unregistering a service that you didn't register yourself is not in the spirit of the system and hence not directly supported.

Cheers,

Sascha


On 07/22/2016 11:09 AM, Aurélien Labrosse wrote:
Hello,

We need to implement a flexible TIFF reader with a delegation system which will allow us to gather image metadata from themselves or from companion files. We started to implement it in a module, and we register it with a custom tiff mimetype.

Now when we open a TIFF image in Mitk, a dialog appears where we have to choose between the Mitk/ITK tiff or our reader (which is the expected behaviour if two readers are able to read the same mimetype).

How can we unregister() the Itk wrapped loader? We just want to use our reader.

We  tried to lookup and unregister the service :

[...]

std::vector<us::ServiceReference<mitk::IFileReader> > refs;
refs = context->GetServiceReferences<mitk::IFileReader>("(org.mitk.IFileIO.description=ITK TIFFImageIO)");
    if (!refs.empty())
    {
us::ServiceReference<mitk::IFileReader> tiffReaderServiceRef = refs.front(); mitk::AbstractFileIOReader* tiffReader = dynamic_cast<mitk::AbstractFileIOReader*>(context->GetService(tiffReaderServiceRef));

        tiffReader->UnregisterService();
        context->UngetService(tiffReaderServiceRef);

}

[...]

Unfortunatly, the UngetService() call does nothing since the registration information is lost in the reader. After some digging, we found that information loss occurs in Modules\Core\src\IO\mitkItkImageIO.cpp, around line 42 :

[...]

ItkImageIO::ItkImageIO(const ItkImageIO& other)
: AbstractFileIO(other)
, m_ImageIO(dynamic_cast<itk::ImageIOBase*>(other.m_ImageIO->Clone().GetPointer()))

{
[...]

So the solution we found is to cancel the wrapping of the ITK TIFF reader as its already done for Nifti and GDCM images. Could the failed unregistration considered as a bug or are we doing things bad? Anyway a more elegant solution than just adding an exception would be great.

We can event work on a solution to fix the unregistration if its a bug.

Thanks for any clues!

Regards,

Aurélien Labrosse



------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev


_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mitk-users

------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. http://sdm.link/zohodev2dev
_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to