Rather than use a QMap, can you keep the cached value in ChannelInfo? We already have ChannelInfo. It may be ugly but it avoids using a QMap in the callback.