public void HandleMessage(TSM message) { var cmd = TheCommonUtils.cdeSplit(message.TXT, ":", false, false); switch (cmd[0]) { case nameof(TheThing.MsgSubscribeToThings): { TheCommRequestResponse.DoHandleMessage <MsgSubscribeToThings <TSubscription>, MsgSubscribeToThingsResponse>(message, #if !CDE_NET4 async #endif (request, response) => { response.SubscriptionStatus = new List <TheThing.TheThingSubscriptionStatus>(); foreach (var subscription in request.SubscriptionRequests) { #if !CDE_NET4 response.SubscriptionStatus.Add(await _subscribeHandler(subscription)); #else response.SubscriptionStatus.Add(_subscribeHandler(subscription).Result); #endif } _refreshSubscriptionStateHandler(); } ); break; } case nameof(TheThing.MsgGetThingSubscriptions): { TheCommRequestResponse.DoHandleMessage <MsgGetThingSubscriptions, MsgGetThingSubscriptionsResponse <TSubscription> >(message, (request, response) => { response.ThingSubscriptions = _getSubscriptionsHandler(request.Generalize ?? false); }); break; } case nameof(TheThing.MsgUnsubscribeFromThings): { TheCommRequestResponse.DoHandleMessage <TheThing.MsgUnsubscribeFromThings, TheThing.MsgUnsubscribeFromThingsResponse>(message, (request, response) => { response.Failed = _unsubscribeHandler(request.SubscriptionIds, request.UnsubscribeAll); } ); break; } default: break; } }