Exemple #1
0
        private static SimulationItem <T> createFor <T>() where T : ISimulationItemPresenter
        {
            var simulationItem = new SimulationItem <T> {
                Index = _allSimulationItems.Count()
            };

            _allSimulationItems.Add(simulationItem);
            return(simulationItem);
        }
        public DeviceSimulator(StatelessServiceContext context)
            : base(context)
        {
            var configurationPackage            = Context.CodePackageActivationContext.GetConfigurationPackageObject("Config");
            var iotHubConnectionStringParameter = configurationPackage.Settings.Sections["ConnectionStrings"].Parameters["IoTHubConnectionString"];
            var iotHubConnectionString          = iotHubConnectionStringParameter.Value;

            var hubNameParameter = configurationPackage.Settings.Sections["IoTHub"].Parameters["HubName"];
            var hubName          = hubNameParameter.Value;

            var bytes = Context.InitializationData;
            var json  = Encoding.ASCII.GetString(bytes);

            simulationItem = JsonConvert.DeserializeObject <SimulationItem>(json);

            var serviceCollection = new ServiceCollection();

            serviceCollection.AddScoped <IFileService, FileService>();
            serviceCollection.AddScoped <ICSharpService <string>, CSharpService <string> >();
            serviceCollection.AddScoped <IFSharpService <string>, FSharpService <string> >();
            serviceCollection.AddScoped <IPythonService <string>, PythonService <string> >();
            serviceCollection.AddScoped <IJavaScriptService <string>, JavaScriptService <string> >();
            serviceCollection.AddScoped <ICodeService <FileInfo, string>, CodeService <FileInfo, string> >();
            serviceCollection.AddScoped <ILoggingService, LoggingService>((sp) =>
            {
                return(new LoggingService(context));
            });

            serviceCollection.AddScoped <IDeviceStore, DeviceStore>((sp) =>
            {
                var deviceStore = new DeviceStore();
                for (int i = simulationItem.DeviceStartRange; i <= simulationItem.DeviceEndRange; i++)
                {
                    var loggingService = sp.GetRequiredService <ILoggingService>();
                    var deviceName     = simulationItem.DevicePrefix + '-' + i;
                    var device         = new DeviceService(context, loggingService, iotHubConnectionString, hubName, deviceName, simulationItem.DeviceType);
                    deviceStore.Devices().Add(device);
                }
                return(deviceStore);
            });

            serviceProvider = serviceCollection.BuildServiceProvider();

            // TODO: Move to Program.cs
            loggingService = serviceProvider.GetRequiredService <ILoggingService>();
            csharpService  = serviceProvider.GetRequiredService <ICSharpService <string> >();
        }