Example #1
0
 public async Task <bool> Delete(StateValueKey stateValueKey)
 {
     using (var client = new HomeConnectionClient(HomeHubConnection))
     {
         return(await client.Delete <bool>("statesvalues", stateValueKey.Key));
     }
 }
        public async Task <SubscriptionOnStateValue> Subscribe(string sentinelHost, string packageHost, string stateValueName)
        {
            using (var client = new HomeConnectionClient(HomeHubConnection))
            {
                var stateValueKey = new StateValueKey(sentinelHost, packageHost, stateValueName);
                await SubscribeOnValueChanged(stateValueKey);

                var subscriptionKeyValue = await client.PostAsJson <string>("subscription",
                                                                            new Subscription(SentinelHost.GetName(), sentinelHost, packageHost, stateValueName));

                if (!string.IsNullOrEmpty(subscriptionKeyValue))
                {
                    var subscriptionKey = new SubscriptionKey(subscriptionKeyValue);
                    if (subscriptionKey.IsValid())
                    {
                        var subscriptionOnStateValue = new SubscriptionOnStateValue(subscriptionKey, stateValueKey);
                        AddSubscriptionInStore(stateValueKey, subscriptionOnStateValue);

                        return(subscriptionOnStateValue);
                    }
                }
                else
                {
                    await UnSubscribeOnValueChanged(new StateValueKey(sentinelHost, packageHost, stateValueName));
                }
            }

            return(null);
        }
Example #3
0
        public async Task <StateValueKey> Send(string sentinelName, string packageName, string name, object value)
        {
            var typeOfValue = value.GetType().GetTypeOfValue();

            var stateValue = new StateValue(sentinelName, packageName, name, value, typeOfValue);

            using (var client = new HomeConnectionClient(HomeHubConnection))
            {
                return(await client.PostAsJson <StateValueKey>("statesvalues", stateValue));
            }
        }
        public async Task <bool> UnSubscribe(string sentinelHost, string packageHost, string stateValueName)
        {
            using (var client = new HomeConnectionClient(HomeHubConnection))
            {
                var stateValueKey = new StateValueKey(sentinelHost, packageHost, stateValueName);
                if (_subscriptionsStore.ContainsKey(stateValueKey))
                {
                    var isSubscriptionDeleted = await client.Delete <bool>("subscription",
                                                                           $"{SentinelHost.GetName()}.{_subscriptionsStore[stateValueKey].Key}");

                    if (isSubscriptionDeleted)
                    {
                        RemoveSubscriptionToStore(stateValueKey);
                        await UnSubscribeOnValueChanged(new StateValueKey(sentinelHost, packageHost, stateValueName));
                    }
                    return(isSubscriptionDeleted);
                }
            }
            return(false);
        }