Setting up IMM Object Implementer (OI) is not handled in a correct and consistent way. There is also a lot of redundant code. In some places (but not everywhere) a thread is used to prevent the main thread from ‘hanging’ a long time but this is done in an incorrect way. See also ticket [#1527]
Handle all OI functionality in a separate thread including a poll loop for callback handling, recovery of IMM handles etc. Today all of this is done in the main thread except recovery of IMM handles.
Use a mailbox to communicate with other threads (main thread). Encapsulate communication in C++ interface. Do not handle client/stream database in the OI thread. This includes the runtime objects for streams. If for example a runtime attribute value is requested the OI shall ask for the value via the interface. Also other changes and settings shall be handled this way.
Do not handle any check-pointing (msb) in the OI thread
It is recommended that ticket [#2149] log: Create a C++ wrapper for handling IMM api is implemented first
Will fix [#585]
Related
Tickets: #585
Diff:
Diff:
Related
Tickets:
#1527Tickets: #1609
Tickets: #2149