예제 #1
0
        public SubscriptionActor(IActorRef manager, MqttConfig mqttConfig, string topic, string alexaResponseTopic)
        {
            this.jsonSettings = new JsonSerializerSettings()
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            };
            this.jsonSerializer     = JsonSerializer.CreateDefault(jsonSettings);
            this.jsonEncoding       = Encoding.UTF8;
            this.manager            = manager;
            this.mqttConfig         = mqttConfig;
            this.topic              = topic;
            this.alexaResponseTopic = alexaResponseTopic;
            this.processors         = new Dictionary <AloxiMessageOperation, List <IActorRef> >();
            this.isSubscribed       = false;

            Receive <MqttMessage.Received>(ReceivedReceived);
            Receive <MqttMessage.Publish>(ReceivedPublish);
            Receive <MqttMessage.PublishAlexaResponse>(ReceivedPublishAlexaResponse);
            Receive <MqttMessage.RegisterProcessor>(ReceivedRegisterProcessor);
            Receive <MqttMessage.StateConnectionClosed>(ReceivedStateConnectionClosed);
            Receive <MqttMessage.StateSubscribed>(ReceivedStateSubscribed);
            Receive <MqttMessage.StateUnsubscribed>(ReceivedStateUnsubscribed);
            Receive <MqttMessage.RequestState>(ReceivedRequestState);
            Receive <MqttMessage.RequestConnect>(ReceivedConnect);
        }
예제 #2
0
 public static MqttClient For(MqttConfig mqttConfig)
 {
     if (String.IsNullOrWhiteSpace(mqttConfig.CaCertPath))
     {
         return(ConstructClientDirectlyInAws(mqttConfig.Endpoint));
     }
     return(ConstructClientBasedOnCertificate(mqttConfig.Endpoint, mqttConfig.CaCertPath, mqttConfig.ClientCertPath));
 }
예제 #3
0
        public ManagerActor(MqttConfig mqttConfig, string subscriptionTopic, string alexaResponseTopic)
        {
            this.subscriptionTopic  = subscriptionTopic;
            this.alexaResponseTopic = alexaResponseTopic;
            this.mqttConfig         = mqttConfig;
            this.subscriber         = ActorRefs.Nobody;

            Receive <MqttMessage.Publish>((msg) => this.subscriber.Forward(msg));
            Receive <MqttMessage.PublishAlexaResponse>((msg) => this.subscriber.Forward(msg));
            Receive <MqttMessage.RegisterProcessor>((msg) => this.subscriber.Forward(msg));
            Receive <MqttMessage.RequestState>((msg) => this.subscriber.Forward(msg));
        }