/// <summary>
        /// Invoke this method before calling Execute(), to initialize the actor
        /// with details like the device model and message type to simulate.
        /// SetupAsync() should be called only once.
        /// </summary>
        public async Task SetupAsync(
            string deviceId,
            DeviceModel deviceModel,
            IDeviceStateActor deviceStateActor,
            ConnectionLoopSettings loopSettings)
        {
            if (this.status != ActorStatus.None)
            {
                this.log.Error("The actor is already initialized",
                               () => new { CurrentDeviceId = this.deviceId, NewDeviceModelName = deviceModel.Name });
                throw new DeviceActorAlreadyInitializedException();
            }

            this.deviceModel      = deviceModel;
            this.deviceId         = deviceId;
            this.deviceStateActor = deviceStateActor;
            this.loopSettings     = loopSettings;

            await this.credentialsSetupLogic.SetupAsync(this, this.deviceId, this.deviceModel);

            await this.fetchFromRegistryLogic.SetupAsync(this, this.deviceId, this.deviceModel);

            await this.registerLogic.SetupAsync(this, this.deviceId, this.deviceModel);

            await this.connectLogic.SetupAsync(this, this.deviceId, this.deviceModel);

            await this.deregisterLogic.SetupAsync(this, this.deviceId, this.deviceModel);

            await this.disconnectLogic.SetupAsync(this, this.deviceId, this.deviceModel);

            this.actorLogger.Init(deviceId, "Connection");

            this.status = ActorStatus.ReadyToStart;
        }
        /// <summary>
        /// Invoke this method before calling Execute(), to initialize the actor
        /// with details like the device id. SetupAsync() should be called only once.
        /// </summary>
        public void Setup(
            string deviceId,
            IDeviceStateActor deviceStateActor,
            IDeviceConnectionActor deviceConnectionActor,
            PropertiesLoopSettings loopSettings)
        {
            if (this.status != ActorStatus.None)
            {
                this.log.Error("The actor is already initialized",
                               () => new { CurrentDeviceId = this.deviceId });
                throw new DeviceActorAlreadyInitializedException();
            }

            this.deviceId              = deviceId;
            this.deviceStateActor      = deviceStateActor;
            this.deviceConnectionActor = deviceConnectionActor;
            this.loopSettings          = loopSettings;

            this.updatePropertiesLogic.Setup(this, this.deviceId);
            this.deviceSetDeviceTagLogic.Setup(this, this.deviceId);

            this.updatePropertiesLogic.Setup(this, this.deviceId);
            this.actorLogger.Setup(deviceId, "Properties");

            this.status = ActorStatus.ReadyToStart;
        }
        public DeviceConnectionActor(
            ILogger logger,
            IActorsLogger actorLogger,
            IRateLimiting rateLimiting,
            CredentialsSetup credentialsSetupLogic,
            FetchFromRegistry fetchFromRegistryLogic,
            Register registerLogic,
            Connect connectLogic,
            Deregister deregisterLogic,
            Disconnect disconnectLogic)
        {
            this.log          = logger;
            this.actorLogger  = actorLogger;
            this.rateLimiting = rateLimiting;

            this.credentialsSetupLogic  = credentialsSetupLogic;
            this.fetchFromRegistryLogic = fetchFromRegistryLogic;
            this.registerLogic          = registerLogic;
            this.connectLogic           = connectLogic;
            this.deregisterLogic        = deregisterLogic;
            this.disconnectLogic        = disconnectLogic;

            this.Message = null;
            this.Client  = null;
            this.Device  = null;

            this.status           = ActorStatus.None;
            this.deviceModel      = null;
            this.deviceId         = null;
            this.deviceStateActor = null;

            this.failedDeviceConnectionsCount = 0;
            this.failedRegistrationsCount     = 0;
            this.failedFetchCount             = 0;
        }
        /// <summary>
        /// Invoke this method before calling Execute(), to initialize the actor
        /// with details like the device model and message type to simulate.
        /// Setup() should be called only once.
        /// </summary>
        public void Setup(
            string deviceId,
            DeviceModel deviceModel,
            DeviceModel.DeviceModelMessage message,
            IDeviceStateActor deviceStateActor,
            IDeviceConnectionActor deviceConnectionActor)
        {
            if (this.status != ActorStatus.None)
            {
                this.log.Error("The actor is already initialized",
                               () => new { CurrentDeviceId = this.deviceId, NewDeviceModelName = deviceModel.Name });
                throw new DeviceActorAlreadyInitializedException();
            }

            this.deviceModel           = deviceModel;
            this.Message               = message;
            this.deviceId              = deviceId;
            this.deviceStateActor      = deviceStateActor;
            this.deviceConnectionActor = deviceConnectionActor;

            this.sendTelemetryLogic.Setup(this, this.deviceId, this.deviceModel);
            this.actorLogger.Setup(deviceId, "Telemetry");

            this.status = ActorStatus.ReadyToStart;
        }
        /// <summary>
        /// Invoke this method before calling Execute(), to initialize the actor
        /// with details like the device model and message type to simulate.
        /// Init() should be called only once.
        /// </summary>
        public void Init(
            ISimulationContext simulationContext,
            string deviceId,
            DeviceModel deviceModel,
            IDeviceStateActor deviceStateActor,
            ConnectionLoopSettings loopSettings)
        {
            this.instance.InitOnce();

            this.simulationContext = simulationContext;
            this.deviceModel       = deviceModel;
            this.deviceId          = deviceId;
            this.deviceStateActor  = deviceStateActor;
            this.loopSettings      = loopSettings;

            this.credentialsSetupLogic.Init(this, this.deviceId, this.deviceModel);
            this.fetchFromRegistryLogic.Init(this, this.deviceId, this.deviceModel);
            this.registerLogic.Init(this, this.deviceId, this.deviceModel);
            this.connectLogic.Init(this, this.deviceId, this.deviceModel);
            this.deregisterLogic.Init(this, this.deviceId, this.deviceModel);
            this.disconnectLogic.Init(this, this.deviceId, this.deviceModel);
            this.actorLogger.Init(deviceId, "Connection");

            this.status = ActorStatus.ReadyToStart;

            this.instance.InitComplete();
        }
Esempio n. 6
0
        public DeviceConnectionActor(
            ILogger logger,
            IActorsLogger actorLogger,
            IRateLimiting rateLimiting,
            Fetch fetchLogic,
            Register registerLogic,
            Connect connectLogic)
        {
            this.log          = logger;
            this.actorLogger  = actorLogger;
            this.rateLimiting = rateLimiting;

            this.fetchLogic    = fetchLogic;
            this.registerLogic = registerLogic;
            this.connectLogic  = connectLogic;

            this.Message = null;
            this.Client  = null;
            this.Device  = null;

            this.status           = ActorStatus.None;
            this.deviceModel      = null;
            this.deviceId         = null;
            this.deviceStateActor = null;

            this.failedDeviceConnectionsCount = 0;
            this.failedRegistrationsCount     = 0;
            this.failedFetchCount             = 0;
        }
 public void Init(
     ISimulationContext simulationContext,
     string deviceId,
     DeviceModel deviceModel,
     IDeviceStateActor deviceStateActor,
     ConnectionLoopSettings loopSettings)
 {
     // TODO: will be implemented when SimulationManager is integrated.
 }
        /// <summary>
        /// Invoke this method before calling Execute(), to initialize the actor
        /// with details like the device id.
        /// </summary>
        public void Init(
            ISimulationContext simulationContext,
            string deviceId,
            IDeviceStateActor deviceStateActor,
            IDeviceConnectionActor deviceConnectionActor,
            PropertiesLoopSettings loopSettings)
        {
            this.instance.InitOnce();

            this.simulationContext     = simulationContext;
            this.deviceId              = deviceId;
            this.deviceStateActor      = deviceStateActor;
            this.deviceConnectionActor = deviceConnectionActor;
            this.updatePropertiesLogic.Init(this, this.deviceId);
            this.actorLogger.Init(deviceId, "Properties");
            this.status = ActorStatus.ReadyToStart;

            this.instance.InitComplete();
        }
        public DeviceTelemetryActor(
            ILogger logger,
            IActorsLogger actorLogger,
            SendTelemetry sendTelemetryLogic,
            IInstance instance)
        {
            this.log                = logger;
            this.actorLogger        = actorLogger;
            this.sendTelemetryLogic = sendTelemetryLogic;
            this.instance           = instance;

            this.Message = null;

            this.status              = ActorStatus.None;
            this.deviceModel         = null;
            this.deviceId            = null;
            this.deviceStateActor    = null;
            this.totalMessagesCount  = 0;
            this.failedMessagesCount = 0;
        }
        public DevicePropertiesActor(
            ILogger logger,
            IActorsLogger actorLogger,
            IRateLimiting rateLimiting,
            UpdateReportedProperties updatePropertiesLogic,
            SetDeviceTag deviceSetDeviceTagLogic)
        {
            this.log                     = logger;
            this.actorLogger             = actorLogger;
            this.rateLimiting            = rateLimiting;
            this.updatePropertiesLogic   = updatePropertiesLogic;
            this.deviceSetDeviceTagLogic = deviceSetDeviceTagLogic;

            this.status                = ActorStatus.None;
            this.deviceId              = null;
            this.deviceStateActor      = null;
            this.deviceConnectionActor = null;

            this.failedTwinUpdatesCount = 0;
        }
        public DeviceTelemetryActor(
            ILogger logger,
            IActorsLogger actorLogger,
            IRateLimiting rateLimiting,
            SendTelemetry sendTelemetryLogic)
        {
            this.log                = logger;
            this.actorLogger        = actorLogger;
            this.rateLimiting       = rateLimiting;
            this.sendTelemetryLogic = sendTelemetryLogic;

            this.Message = null;

            this.status              = ActorStatus.None;
            this.deviceModel         = null;
            this.deviceId            = null;
            this.deviceStateActor    = null;
            this.totalMessagesCount  = 0;
            this.failedMessagesCount = 0;
        }
        public DevicePropertiesActor(
            ILogger logger,
            IActorsLogger actorLogger,
            UpdateReportedProperties updatePropertiesLogic,
            SetDeviceTag deviceSetDeviceTagLogic,
            IInstance instance)
        {
            this.log                     = logger;
            this.actorLogger             = actorLogger;
            this.updatePropertiesLogic   = updatePropertiesLogic;
            this.deviceSetDeviceTagLogic = deviceSetDeviceTagLogic;
            this.instance                = instance;

            this.status           = ActorStatus.None;
            this.deviceId         = null;
            this.deviceStateActor = null;
            this.deviceContext    = null;

            this.failedTwinUpdatesCount = 0;
        }
        /// <summary>
        /// Invoke this method before calling Execute(), to initialize the actor
        /// with details like the device model and message type to simulate.
        /// </summary>
        public void Init(
            ISimulationContext simulationContext,
            string deviceId,
            DeviceModel deviceModel,
            DeviceModel.DeviceModelMessage message,
            IDeviceStateActor deviceStateActor,
            IDeviceConnectionActor context)
        {
            this.instance.InitOnce();

            this.simulationContext = simulationContext;
            this.deviceModel       = deviceModel;
            this.Message           = message;
            this.deviceId          = deviceId;
            this.deviceStateActor  = deviceStateActor;
            this.deviceContext     = context;

            this.sendTelemetryLogic.Init(this, this.deviceId, this.deviceModel);
            this.actorLogger.Init(deviceId, "Telemetry");

            this.status = ActorStatus.ReadyToStart;

            this.instance.InitComplete();
        }