Esempio n. 1
0
        static async Task <IModuleClient> Create(Option <UpstreamProtocol> upstreamProtocol, Func <ModuleClient, Task> initialize, Func <UpstreamProtocol, Task <Client.ModuleClient> > deviceClientCreator)
        {
            try
            {
                return(await ExecuteWithRetry(
                           async() =>
                {
                    Client.ModuleClient dc = await CreateDeviceClientForUpstreamProtocol(upstreamProtocol, deviceClientCreator);
                    Events.DeviceClientCreated();
                    var deviceClient = new ModuleClient(dc);
                    if (initialize != null)
                    {
                        await initialize(deviceClient);
                    }

                    return deviceClient;
                },
                           Events.RetryingDeviceClientConnection));
            }
            catch (Exception e)
            {
                Events.DeviceClientSetupFailed(e);
                Environment.Exit(1);
                return(null);
            }
        }
Esempio n. 2
0
        static async Task <Client.ModuleClient> CreateAndOpenDeviceClient(TransportType transport,
                                                                          Option <string> connectionString,
                                                                          ConnectionStatusChangesHandler statusChangedHandler,
                                                                          Option <string> productInfo)
        {
            Events.AttemptingConnectionWithTransport(transport);
            Client.ModuleClient deviceClient = await connectionString.Map(cs => Task.FromResult(Client.ModuleClient.CreateFromConnectionString(cs, transport)))
                                               .GetOrElse(() => Client.ModuleClient.CreateFromEnvironmentAsync(transport));

            productInfo.ForEach(p => deviceClient.ProductInfo = p);
            await OpenAsync(statusChangedHandler, deviceClient);

            Events.ConnectedWithTransport(transport);
            return(deviceClient);
        }
Esempio n. 3
0
        static async Task <Client.ModuleClient> CreateAndOpenDeviceClient(
            UpstreamProtocol upstreamProtocol,
            Option <string> connectionString,
            ConnectionStatusChangesHandler statusChangedHandler,
            Option <IWebProxy> proxy,
            Option <string> productInfo)
        {
            ITransportSettings settings = GetTransportSettings(upstreamProtocol, proxy);

            Events.AttemptingConnectionWithTransport(settings.GetTransportType());
            Client.ModuleClient deviceClient = await connectionString
                                               .Map(cs => Task.FromResult(Client.ModuleClient.CreateFromConnectionString(cs, new[] { settings })))
                                               .GetOrElse(() => Client.ModuleClient.CreateFromEnvironmentAsync(new[] { settings }));

            productInfo.ForEach(p => deviceClient.ProductInfo = p);
            await OpenAsync(statusChangedHandler, deviceClient);

            Events.ConnectedWithTransport(settings.GetTransportType());
            return(deviceClient);
        }
Esempio n. 4
0
 ModuleClient(Client.ModuleClient moduleClient)
 {
     this.moduleClient = moduleClient;
 }
Esempio n. 5
0
 static async Task OpenAsync(ConnectionStatusChangesHandler statusChangedHandler, Client.ModuleClient deviceClient)
 {
     // note: it's important to set the status-changed handler and
     // timeout value *before* we open a connection to the hub
     deviceClient.OperationTimeoutInMilliseconds = DeviceClientTimeout;
     deviceClient.SetConnectionStatusChangesHandler(statusChangedHandler);
     await deviceClient.OpenAsync();
 }
Esempio n. 6
0
 ModuleClient(Client.ModuleClient deviceClient)
 {
     this.deviceClient = deviceClient;
 }