/// <summary>
 /// Stop listen events.
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public GXEventsUnregisterResponse Put(GXEventsUnregisterRequest request)
 {            
     if (request.Instance.Equals(Guid.Empty))
     {
         throw new Exception("Guid is empty.");
     }        
     Guid guid = Guid.Empty;
     IAuthSession s = this.GetSession(false);            
     long id;
     if (!long.TryParse(s.Id, out id))
     {
         if (!GXBasicAuthProvider.IsGuid(s.UserAuthName, out guid))
         {
             throw new ArgumentException("Access denied.");
         }
     }
     AppHost host = this.ResolveService<AppHost>();
     host.RemoveEvent(request.Instance, request.DataCollectorGuid);
     if (guid != Guid.Empty)
     {
         //Notify that DC is disconnected.
         List<GXEventsItem> events = new List<GXEventsItem>();
         lock (Db)
         {
             GXAmiDataCollector dc = Db.Select<GXAmiDataCollector>(q => q.Guid == guid)[0];
             dc.State = Gurux.Device.DeviceStates.None;
             Db.UpdateOnly(dc, p => p.StatesAsInt, p => p.Id == dc.Id);
             events.Add(new GXEventsItem(ActionTargets.DataCollector, Actions.State, dc));
         }                                
         host.SetEvents(Db, this.Request, 0, events);
     }
     return new GXEventsUnregisterResponse();
 }
Example #2
0
        /// <summary>
        /// Stop listen events.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public GXEventsUnregisterResponse Put(GXEventsUnregisterRequest request)
        {
            if (request.Instance.Equals(Guid.Empty))
            {
                throw new Exception("Guid is empty.");
            }
            Guid         guid = Guid.Empty;
            IAuthSession s    = this.GetSession(false);
            long         id;

            if (!long.TryParse(s.Id, out id))
            {
                if (!GXBasicAuthProvider.IsGuid(s.UserAuthName, out guid))
                {
                    throw new ArgumentException("Access denied.");
                }
            }
            AppHost host = this.ResolveService <AppHost>();

            host.RemoveEvent(request.Instance, request.DataCollectorGuid);
            if (guid != Guid.Empty)
            {
                //Notify that DC is disconnected.
                List <GXEventsItem> events = new List <GXEventsItem>();
                lock (Db)
                {
                    GXAmiDataCollector dc = Db.Select <GXAmiDataCollector>(q => q.Guid == guid)[0];
                    dc.State = Gurux.Device.DeviceStates.None;
                    Db.UpdateOnly(dc, p => p.StatesAsInt, p => p.Id == dc.Id);
                    events.Add(new GXEventsItem(ActionTargets.DataCollector, Actions.State, dc));
                }
                host.SetEvents(Db, this.Request, 0, events);
            }
            return(new GXEventsUnregisterResponse());
        }