void ManualSessionProcess(DeviceDescriptionHolder devHolder)
 {
     IdentitySubscriptions.Add(sessionFactory.CreateSession(devHolder.Uris)
                               .ObserveOnCurrentDispatcher()
                               .Subscribe(isession => {
         ManualInitDeviceHolder(isession, devHolder);
     }, err => {
         dbg.Error(err);
     }));
 }
 void SessionProcess(DeviceDescriptionHolder devHolder, bool publishEvent)
 {
     IdentitySubscriptions.Add(sessionFactory.CreateSession(devHolder.Uris)
                               .ObserveOnCurrentDispatcher()
                               .Subscribe(isession => {
         InitDeviceHolder(isession, devHolder, publishEvent);
     }, err => {
         //dbg.Error(err);
         InitDeviceHolder(sessionFactory.CreateSession(devHolder.Uris[devHolder.Uris.Count() - 1]), devHolder, publishEvent);
     }));
 }
 void ReleaseDeviceSubscription()
 {
     IdentitySubscriptions.Dispose();
     IdentitySubscriptions = new CompositeDisposable();
     subscriptions.Dispose();
     subscriptions = new CompositeDisposable();
     if (discoverSubscription != null)
     {
         discoverSubscription.Dispose();
     }
     discoverSubscription = new SerialDisposable();
 }
        void ManualInitDeviceHolder(INvtSession session, DeviceDescriptionHolder devHolder)
        {
            devHolder.session = session;

            facade = new OdmSession(session);
            var model = new IdentificationModel();

            IdentitySubscriptions.Add(
                facade.GetIdentity(() => model)
                .ObserveOnCurrentDispatcher()
                .Subscribe(mod => {
                devHolder.Init(mod);
            }, err => {
                //dbg.Error(err);
                //MessageBox.Show(err.Message);
            })
                );
        }
        void InitDeviceHolder(INvtSession session, DeviceDescriptionHolder devHolder, bool publish)
        {
            devHolder.session = session;
            facade            = new OdmSession(session);
            var model = new IdentificationModel();

            IdentitySubscriptions.Add(
                facade.GetIdentity(() => model)
                .ObserveOnCurrentDispatcher()
                .Subscribe(mod => {
                devHolder.Init(mod);
                if (publish)
                {
                    DeviceSelectedPublish(devHolder, sessionFactory);
                }
            }, err => {
                //dbg.Error(err);
                //MessageBox.Show(err.Message);
            })
                );
        }