Exemplo n.º 1
0
        /// <summary>
        /// Begins the processing asynchronously.
        /// </summary>
        /// <returns>The async <see cref="Task"/>.</returns>
        private async Task BeginProcessingAsync()
        {
            var runtimeContext = new RuntimeContext
            {
                AccountDetails = await CaasAuthentication.Authenticate(UserName, Password, Region),
                LogProvider    = new ConsoleLogProvider()
            };

            var taskBuilder  = new TaskBuilder();
            var taskExecutor = taskBuilder.BuildTasksFromDeploymentTemplate(ResolvePath(Template), ResolvePath(Parameters));
            var log          = await taskExecutor.Execute(runtimeContext);

            Console.WriteLine($"Result: {log.Status}");
            WriteLog(log, ResolvePath(DeploymentLog));
            Console.WriteLine($"Complete! Deployment log written to {DeploymentLog}.");

            if (taskExecutor.Context.OutputParameters != null)
            {
                Console.WriteLine("OUTPUT PARAMETERS:");

                foreach (var param in taskExecutor.Context.OutputParameters)
                {
                    Console.WriteLine($"{param.Key}: {param.Value}");
                }
            }
        }
Exemplo n.º 2
0
        protected override Task StopUpdatesNativeAsync()
        {
            _parentDevice.UpdatedCharacterteristicValue -= UpdatedNotify;

            // JTS Added this if-statement. We found that on iOS, when you turn off Bluetooth during a connection it gets the characteristic into a stale state
            // and the IsNotifying property remains True. Then attempting to reset it does not trigger the callback thus resulting in a deadlock.
            if (_parentDevice.State == CBPeripheralState.Disconnected)
            {
                return(Task.FromResult(true));
            }

            return(TaskBuilder.FromEvent <bool, EventHandler <CBCharacteristicEventArgs> >(
                       execute: () => _parentDevice.SetNotifyValue(false, _nativeCharacteristic),
                       getCompleteHandler: (complete, reject) => (sender, args) =>
            {
                if (args.Characteristic.UUID != _nativeCharacteristic.UUID)
                {
                    return;
                }

                if (args.Error != null)
                {
                    reject(new Exception($"Stop Notifications: Error {args.Error.Description}"));
                }
                else
                {
                    Trace.Message($"StopUpdates IsNotifying: {args.Characteristic.IsNotifying}");
                    complete(args.Characteristic.IsNotifying);
                }
            },
                       subscribeComplete: handler => _parentDevice.UpdatedNotificationState += handler,
                       unsubscribeComplete: handler => _parentDevice.UpdatedNotificationState -= handler));
        }
Exemplo n.º 3
0
        public Task DisconnectDeviceAsync(IDevice device)
        {
            if (!ConnectedDevices.Contains(device))
            {
                Trace.Message("Disconnect async: device {0} not in the list of connected devices.", device.Name);
                return(Task.FromResult(false));
            }

            return(TaskBuilder.FromEvent <bool, EventHandler <DeviceEventArgs>, EventHandler <DeviceErrorEventArgs> >(
                       execute: () => DisconnectDeviceNative(device),

                       getCompleteHandler: (complete, reject) => ((sender, args) =>
            {
                if (args.Device.Id == device.Id)
                {
                    Trace.Message("DisconnectAsync Disconnected: {0} {1}", args.Device.Id, args.Device.Name);
                    complete(true);
                }
            }),
                       subscribeComplete: handler => DeviceDisconnected += handler,
                       unsubscribeComplete: handler => DeviceDisconnected -= handler,

                       getRejectHandler: reject => ((sender, args) =>
            {
                if (args.Device.Id == device.Id)
                {
                    Trace.Message("DisconnectAsync", "Disconnect Error: {0} {1}", args.Device?.Id, args.Device?.Name);
                    reject(new Exception("Disconnect operation exception"));
                }
            }),
                       subscribeReject: handler => DeviceConnectionError += handler,
                       unsubscribeReject: handler => DeviceConnectionError -= handler));
        }
Exemplo n.º 4
0
        public override async Task <Boolean> UpdateRssiAsync()
        {
            if (this._gatt == null || this._gattCallback == null)
            {
                Trace.Message(
                    "You can't read the RSSI value for disconnected devices except on discovery on Android. Device is {0}",
                    this.State);
                return(false);
            }

            return(await TaskBuilder.FromEvent <Boolean, EventHandler <RssiReadCallbackEventArgs>, EventHandler>(
                       () => this._gatt.ReadRemoteRssi(),
                       (complete, reject) => (sender, args) =>
            {
                if (args.Error == null)
                {
                    Trace.Message("Read RSSI for {0} {1}: {2}", this.Id, this.Name, args.Rssi);
                    this.Rssi = args.Rssi;
                    complete(true);
                }
                else
                {
                    Trace.Message($"Failed to read RSSI for device {this.Id}-{this.Name}. {args.Error.Message}");
                    complete(false);
                }
            },
                       handler => this._gattCallback.RemoteRssiRead += handler,
                       handler => this._gattCallback.RemoteRssiRead -= handler,
                       reject => (sender, args) =>
            {
                reject(new Exception($"Device {this.Name} disconnected while updating rssi."));
            },
                       handler => this._gattCallback.ConnectionInterrupted += handler,
                       handler => this._gattCallback.ConnectionInterrupted -= handler));
        }
Exemplo n.º 5
0
 protected override Task <IEnumerable <IService> > GetServicesNativeAsync()
 {
     return(TaskBuilder.FromEvent <IEnumerable <IService>, EventHandler <NSErrorEventArgs> >(
                execute: () => _nativeDevice.DiscoverServices(),
                getCompleteHandler: (complete, reject) => (sender, args) =>
     {
         // If args.Error was not null then the Service might be null
         if (args.Error != null)
         {
             reject(new Exception($"Error while discovering services {args.Error.LocalizedDescription}"));
         }
         else if (_nativeDevice.Services == null)
         {
             // No service discovered.
             reject(new Exception($"Error while discovering services: returned list is null"));
         }
         else
         {
             var services = _nativeDevice.Services
                            .Select(nativeService => new Service(nativeService, this))
                            .Cast <IService>().ToList();
             complete(services);
         }
     },
                subscribeComplete: handler => _nativeDevice.DiscoveredService += handler,
                unsubscribeComplete: handler => _nativeDevice.DiscoveredService -= handler));
 }
        protected async Task StopUpdatesNativeAsync()
        {
            _gattCallback.CharacteristicValueUpdated -= OnCharacteristicValueChanged;

            await TaskBuilder.EnqueueOnMainThreadAsync(() =>
            {
                if (!_gatt.SetCharacteristicNotification(NativeCharacteristic, false))
                {
                    throw new CharacteristicReadException("GATT: SetCharacteristicNotification to false, FAILED.");
                }
            });

            if (NativeCharacteristic.Descriptors.Count > 0)
            {
                var descriptors = await GetDescriptorsAsync();

                var descriptor = descriptors.FirstOrDefault(d => d.Id.Equals(ClientCharacteristicConfigurationDescriptorId)) ??
                                 descriptors.FirstOrDefault();            // fallback just in case manufacturer forgot

                if (descriptor != null && (Properties.HasFlag(CharacteristicPropertyType.Notify) || Properties.HasFlag(CharacteristicPropertyType.Indicate)))
                {
                    await descriptor.WriteAsync(BluetoothGattDescriptor.DisableNotificationValue.ToArray());

                    Trace.Message("Descriptor set value: DISABLE_NOTIFY");
                }
            }
            else
            {
                Trace.Message("StopUpdatesNativeAsync descriptor set value FAILED: _nativeCharacteristic.Descriptors was empty");
            }
        }
Exemplo n.º 7
0
        public override async Task <bool> UpdateRssiAsync()
        {
            if (_gatt == null || _gattCallback == null)
            {
                Trace.Message("You can't read the RSSI value for disconnected devices except on discovery on Android. Device is {0}", State);
                return(false);
            }

            return(await TaskBuilder.FromEvent <bool, EventHandler <RssiReadCallbackEventArgs>, EventHandler>(
                       execute : () => _gatt.ReadRemoteRssi(),
                       getCompleteHandler : (complete, reject) => ((sender, args) =>
            {
                if (args.Error == null)
                {
                    Trace.Message("Read RSSI for {0} {1}: {2}", Id, Name, args.Rssi);
                    Rssi = args.Rssi;
                    complete(true);
                }
                else
                {
                    Trace.Message($"Failed to read RSSI for device {Id}-{Name}. {args.Error.Message}");
                    complete(false);
                }
            }),
                       subscribeComplete : handler => _gattCallback.RemoteRssiRead += handler,
                       unsubscribeComplete : handler => _gattCallback.RemoteRssiRead -= handler,
                       getRejectHandler : reject => ((sender, args) =>
            {
                reject(new Exception($"Device {Name} disconnected while updating rssi."));
            }),
                       subscribeReject : handler => _gattCallback.ConnectionInterrupted += handler,
                       unsubscribeReject : handler => _gattCallback.ConnectionInterrupted -= handler));
        }
Exemplo n.º 8
0
 public void CircularDependency()
 {
     var templateFile   = Path.Combine(_resourceFolder, "CircularDependency.json");
     var parametersFile = Path.Combine(_resourceFolder, "StandardTemplateParams.json");
     var taskBuilder    = new TaskBuilder();
     var taskExecutor   = taskBuilder.BuildTasksFromDeploymentTemplate(templateFile, parametersFile);
 }
        public async Task ParseAndExecuteDeploymentTasks_Success()
        {
            var client = new FakeHttpClient();
            client.AddResponse("/network/networkDomain/d5791a6d-2b69-47e2-be06-f26a2ec4bff8", "NetworkDomain_Get.json");
            client.AddResponse("/network/vlan?networkDomainId=d5791a6d-2b69-47e2-be06-f26a2ec4bff8&name=Unit Test VLAN", "GenericNotFound.json");
            client.AddResponse("/network/deployVlan", "Vlan_Delpoy.json");
            client.AddResponse("/network/vlan/997e2084-00b1-4d1d-96ce-099946679c6f", "Vlan_Get.json");
            client.AddResponse("/imageWithDiskSpeed?name=RedHat 6 64-bit 2 CPU", "Image_Get.xml");
            client.AddResponse("/server/server?networkDomainId=d5791a6d-2b69-47e2-be06-f26a2ec4bff8&name=Unit Test Server", "GenericNotFound.json");
            client.AddResponse("/server/deployServer", "Server_Deploy.json");
            client.AddResponse("/server/server/b42b40e1-351a-4df9-b726-2ccff01f2767", "Server_Get.json");
            client.AddResponse("/network/addPublicIpBlock", "PublicIpBlock_Add.json");
            client.AddResponse("/network/publicIpBlock/996b066e-bdce-11e4-8c14-b8ca3a5d9ef8", "PublicIpBlock_Get.json");
            client.AddResponse("/network/natRule?networkDomainId=d5791a6d-2b69-47e2-be06-f26a2ec4bff8&internalIp=10.0.0.8", "GenericNotFound.json");
            client.AddResponse("/network/createNatRule", "NatRule_Create.json");
            client.AddResponse("/network/natRule/a6b2e743-e330-4deb-a76e-0d9cb0b1d1bb", "NatRule_Get.json");

            var templateFile = Path.Combine(_resourceFolder, "StandardTemplate.json");
            var parametersFile = Path.Combine(_resourceFolder, "StandardTemplateParams.json");
            var taskBuilder = new TaskBuilder();
            var taskExecutor = taskBuilder.BuildTasksFromDeploymentTemplate(templateFile, parametersFile);
            var log = await taskExecutor.Execute(_runtimeContext);

            Assert.AreEqual(DeploymentLogStatus.Success, log.Status);
            Assert.AreEqual("http://168.128.5.106/index.html", taskExecutor.Context.OutputParameters["ServerPublicUrl"]);
        }
Exemplo n.º 10
0
        protected override Task WriteNativeAsync(byte[] data)
        {
            return(TaskBuilder.FromEvent <bool, EventHandler <DescriptorCallbackEventArgs>, EventHandler>(
                       execute: () => InternalWrite(data),
                       getCompleteHandler: (complete, reject) => ((sender, args) =>
            {
                if (args.Descriptor.Uuid != _nativeDescriptor.Uuid)
                {
                    return;
                }

                if (args.Exception != null)
                {
                    reject(args.Exception);
                }
                else
                {
                    complete(true);
                }
            }),
                       subscribeComplete: handler => _gattCallback.DescriptorValueWritten += handler,
                       unsubscribeComplete: handler => _gattCallback.DescriptorValueWritten -= handler,
                       getRejectHandler: reject => ((sender, args) =>
            {
                reject(new Exception($"Device '{Characteristic.Service.Device.Id}' disconnected while writing descriptor with {Id}."));
            }),
                       subscribeReject: handler => _gattCallback.ConnectionInterrupted += handler,
                       unsubscribeReject: handler => _gattCallback.ConnectionInterrupted -= handler));
        }
        public static async Task <IDevice> DiscoverDeviceAsync(this IAdapter adapter, Func <IDevice, bool> deviceFilter, CancellationToken cancellationToken = default)
        {
            var device = adapter.DiscoveredDevices.FirstOrDefault(deviceFilter);

            if (device != null)
            {
                return(device);
            }

            if (adapter.IsScanning)
            {
                await adapter.StopScanningForDevicesAsync();
            }

            return(await TaskBuilder.FromEvent <IDevice, EventHandler <DeviceEventArgs>, EventHandler>(
                       execute : () => adapter.StartScanningForDevicesAsync(deviceFilter, cancellationToken),

                       getCompleteHandler : (complete, reject) => ((sender, args) =>
            {
                complete(args.Device);
                adapter.StopScanningForDevicesAsync();
            }),
                       subscribeComplete : handler => adapter.DeviceDiscovered += handler,
                       unsubscribeComplete : handler => adapter.DeviceDiscovered -= handler,

                       getRejectHandler : reject => ((sender, args) => { reject(new DeviceDiscoverException()); }),
                       subscribeReject : handler => adapter.ScanTimeoutElapsed += handler,
                       unsubscribeReject : handler => adapter.ScanTimeoutElapsed -= handler,

                       token : cancellationToken));
        }
Exemplo n.º 12
0
        public async Task ParseAndExecuteDeploymentTasks_Success()
        {
            var client = new FakeHttpClient();

            client.AddResponse("/network/networkDomain/d5791a6d-2b69-47e2-be06-f26a2ec4bff8", "NetworkDomain_Get.json");
            client.AddResponse("/network/vlan?networkDomainId=d5791a6d-2b69-47e2-be06-f26a2ec4bff8&name=Unit Test VLAN", "GenericNotFound.json");
            client.AddResponse("/network/deployVlan", "Vlan_Delpoy.json");
            client.AddResponse("/network/vlan/997e2084-00b1-4d1d-96ce-099946679c6f", "Vlan_Get.json");
            client.AddResponse("/imageWithDiskSpeed?name=RedHat 6 64-bit 2 CPU", "Image_Get.xml");
            client.AddResponse("/server/server?networkDomainId=d5791a6d-2b69-47e2-be06-f26a2ec4bff8&name=Unit Test Server", "GenericNotFound.json");
            client.AddResponse("/server/deployServer", "Server_Deploy.json");
            client.AddResponse("/server/server/b42b40e1-351a-4df9-b726-2ccff01f2767", "Server_Get.json");
            client.AddResponse("/network/addPublicIpBlock", "PublicIpBlock_Add.json");
            client.AddResponse("/network/publicIpBlock/996b066e-bdce-11e4-8c14-b8ca3a5d9ef8", "PublicIpBlock_Get.json");
            client.AddResponse("/network/natRule?networkDomainId=d5791a6d-2b69-47e2-be06-f26a2ec4bff8&internalIp=10.0.0.8", "GenericNotFound.json");
            client.AddResponse("/network/createNatRule", "NatRule_Create.json");
            client.AddResponse("/network/natRule/a6b2e743-e330-4deb-a76e-0d9cb0b1d1bb", "NatRule_Get.json");

            var templateFile   = Path.Combine(_resourceFolder, "StandardTemplate.json");
            var parametersFile = Path.Combine(_resourceFolder, "StandardTemplateParams.json");
            var taskBuilder    = new TaskBuilder();
            var taskExecutor   = taskBuilder.BuildTasksFromDeploymentTemplate(templateFile, parametersFile);
            var log            = await taskExecutor.Execute(_runtimeContext);

            Assert.AreEqual(DeploymentLogStatus.Success, log.Status);
            Assert.AreEqual("http://168.128.5.106/index.html", taskExecutor.Context.OutputParameters["ServerPublicUrl"]);
        }
        protected override Task StopUpdatesNativeAsync()
        {
            _parentDevice.UpdatedCharacterteristicValue -= UpdatedNotify;
            return(TaskBuilder.FromEvent <bool, EventHandler <CBCharacteristicEventArgs> >(
                       execute: () => _parentDevice.SetNotifyValue(false, _nativeCharacteristic),
                       getCompleteHandler: (complete, reject) => (sender, args) =>
            {
                if (args.Characteristic.UUID != _nativeCharacteristic.UUID)
                {
                    return;
                }

                if (args.Error != null)
                {
                    reject(new Exception($"Stop Notifications: Error {args.Error.Description}"));
                }
                else
                {
                    Trace.Message($"StopUpdates IsNotifying: {args.Characteristic.IsNotifying}");
                    complete(args.Characteristic.IsNotifying);
                }
            },
                       subscribeComplete: handler => _parentDevice.UpdatedNotificationState += handler,
                       unsubscribeComplete: handler => _parentDevice.UpdatedNotificationState -= handler));
        }
Exemplo n.º 14
0
 protected override Task <IList <ICharacteristic> > GetCharacteristicsNativeAsync()
 {
     return(TaskBuilder.FromEvent <IList <ICharacteristic>, EventHandler <CBServiceEventArgs> >(
                execute: () => _device.DiscoverCharacteristics(_service),
                getCompleteHandler: (complete, reject) => (sender, args) =>
     {
         if (args.Error != null)
         {
             reject(new Exception($"Discover characteristics error: {args.Error.Description}"));
         }
         else
         if (args.Service?.Characteristics == null)
         {
             reject(new Exception($"Discover characteristics error: returned list is null"));
         }
         else
         {
             var characteristics = args.Service.Characteristics
                                   .Select(characteristic => new Characteristic(characteristic, _device, this))
                                   .Cast <ICharacteristic>().ToList();
             complete(characteristics);
         }
     },
                subscribeComplete: handler => _device.DiscoveredCharacteristic += handler,
                unsubscribeComplete: handler => _device.DiscoveredCharacteristic -= handler));
 }
        protected override Task StartUpdatesNativeAsync()
        {
            _parentDevice.UpdatedCharacterteristicValue -= UpdatedNotify;
            _parentDevice.UpdatedCharacterteristicValue += UpdatedNotify;

            //https://developer.apple.com/reference/corebluetooth/cbperipheral/1518949-setnotifyvalue
            return(TaskBuilder.FromEvent <bool, EventHandler <CBCharacteristicEventArgs> >(
                       execute: () => _parentDevice.SetNotifyValue(true, _nativeCharacteristic),
                       getCompleteHandler: (complete, reject) => (sender, args) =>
            {
                if (args.Characteristic.UUID != _nativeCharacteristic.UUID)
                {
                    return;
                }

                if (args.Error != null)
                {
                    reject(new Exception($"Start Notifications: Error {args.Error.Description}"));
                }
                else
                {
                    Trace.Message($"StartUpdates IsNotifying: {args.Characteristic.IsNotifying}");
                    complete(args.Characteristic.IsNotifying);
                }
            },
                       subscribeComplete: handler => _parentDevice.UpdatedNotificationState += handler,
                       unsubscribeComplete: handler => _parentDevice.UpdatedNotificationState -= handler));
        }
Exemplo n.º 16
0
 public ServiceEventsHandler(DeploymentBoard deploymentBoard, FeedBoard feedBoard, DeploymentTaskProcessor taskProcessor, TaskBuilder builder)
 {
     _deploymentBoard = deploymentBoard;
     _feedBoard       = feedBoard;
     _taskProcessor   = taskProcessor;
     _builder         = builder;
 }
Exemplo n.º 17
0
        public static async Task <IDevice> DiscoverDeviceAsync(this IAdapter adapter,
                                                               Func <IDevice, Boolean> deviceFilter, CancellationToken cancellationToken = default(CancellationToken))
        {
            IDevice device = adapter.DiscoveredDevices.FirstOrDefault(deviceFilter);

            if (device != null)
            {
                return(device);
            }

            if (adapter.IsScanning)
            {
                await adapter.StopScanningForDevicesAsync();
            }

            return(await TaskBuilder.FromEvent <IDevice, EventHandler <DeviceEventArgs>, EventHandler>(
                       () => adapter.StartScanningForDevicesAsync(deviceFilter, cancellationToken),
                       (complete, reject) => (sender, args) =>
            {
                complete(args.Device);
                adapter.StopScanningForDevicesAsync();
            },
                       handler => adapter.DeviceDiscovered += handler,
                       handler => adapter.DeviceDiscovered -= handler,
                       reject => (sender, args) => { reject(new DeviceDiscoverException()); },
                       handler => adapter.ScanTimeoutElapsed += handler,
                       handler => adapter.ScanTimeoutElapsed -= handler,
                       cancellationToken));
        }
Exemplo n.º 18
0
        // In here, we're defining a class, foo_Task, derived from our DefinedTask class. This allows us to write the bulk of the code
        // in real C#, rather than attempting to build it here.
        // This means that we have Task <- DefinedTask <- foo_Task.
        // We also need a module and an assembly to hold the class, so we do that, too.
        protected override void ExecuteTask()
        {
            AssemblyName assemblyName = new AssemblyName();

            assemblyName.Name = _taskName + "_Assembly";

            AssemblyBuilder assemblyBuilder =
                AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
            ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(_taskName + "_Module");

            // Now we've got an assembly and a module for the task to live in, we can define the actual task class.
            TypeBuilder typeBuilder = moduleBuilder.DefineType(_taskName + "_Task", TypeAttributes.Public);

            typeBuilder.SetParent(typeof(DefinedTask));

            // It needs a [TaskName] attribute.
            ConstructorInfo taskNameAttributeConstructor =
                typeof(TaskNameAttribute).GetConstructor(new Type[] { typeof(string) });
            CustomAttributeBuilder taskNameAttributeBuilder =
                new CustomAttributeBuilder(taskNameAttributeConstructor, new object[] { _taskName });

            typeBuilder.SetCustomAttribute(taskNameAttributeBuilder);

            // We're done. Create it.
            Type taskType = typeBuilder.CreateType();

            // Stash the XML in our static. We'll need it in DefinedTask later.
            DefinedTaskDefinitions.Add(_taskName, XmlNode);

            // Hook that up into NAnt.
            TaskBuilder taskBuilder = new TaskBuilder(taskType.Assembly, taskType.FullName);

            TypeFactory.TaskBuilders.Add(taskBuilder);
        }
 private Task <bool> UpdateRssiNativeAsync()
 {
     return(TaskBuilder.FromEvent <bool, EventHandler <CBRssiEventArgs>, EventHandler <CBPeripheralErrorEventArgs> >(
                execute: () => NativeDevice.ReadRSSI(),
                getCompleteHandler: (complete, reject) => (sender, args) =>
     {
         if (args.Error != null)
         {
             reject(new Exception($"Error while reading rssi services {args.Error.LocalizedDescription}"));
         }
         else
         {
             Rssi = args.Rssi?.Int32Value ?? 0;
             complete(true);
         }
     },
                subscribeComplete: handler => NativeDevice.RssiRead += handler,
                unsubscribeComplete: handler => NativeDevice.RssiRead -= handler,
                getRejectHandler: reject => ((sender, args) =>
     {
         if (args.Peripheral.Identifier == NativeDevice.Identifier)
         {
             reject(new Exception($"Device {Name} disconnected while reading RSSI."));
         }
     }),
                subscribeReject: handler => _bleCentralManagerDelegate.DisconnectedPeripheral += handler,
                unsubscribeReject: handler => _bleCentralManagerDelegate.DisconnectedPeripheral -= handler));
 }
Exemplo n.º 20
0
        public void Cancelled_Type_Task_T_Should_Be_Cancelled()
        {
            var target = TaskBuilder.GetCancelled(typeof(Task <int>));

            target.IsCanceled.Should().BeTrue();
            target.Should().BeOfType <Task <int> >();
        }
 public DeploymentTaskProcessor(TaskBuilder builder)
 {
     _builder            = builder;
     _taskQueue          = new BlockingCollection <DeploymentTaskRequest>();
     _cancellationSource = new CancellationTokenSource();
     _processingTask     = Task.Run((Action)ProcessInternal);
 }
Exemplo n.º 22
0
        protected override Task <bool> WriteNativeAsync(byte[] data)
        {
            Task <bool> task;

            if (CharacteristicWriteType == CBCharacteristicWriteType.WithResponse)
            {
                task = TaskBuilder.FromEvent <bool, EventHandler <CBCharacteristicEventArgs> >(
                    execute: () => { },
                    getCompleteHandler: complete => (sender, args) =>
                {
                    if (args.Characteristic.UUID != _nativeCharacteristic.UUID)
                    {
                        return;
                    }

                    complete(args.Error == null);
                },
                    subscribeComplete: handler => _parentDevice.WroteCharacteristicValue   += handler,
                    unsubscribeComplete: handler => _parentDevice.WroteCharacteristicValue -= handler);
            }
            else
            {
                task = Task.FromResult(true);
            }

            var nsdata = NSData.FromArray(data);

            _parentDevice.WriteValue(nsdata, _nativeCharacteristic, CharacteristicWriteType);

            return(task);
        }
Exemplo n.º 23
0
        public void Cancelled_Type_Task_Should_Be_Cancelled()
        {
            var target = TaskBuilder.GetCancelled(typeof(Task));

            target.IsCanceled.Should().BeTrue();
            target.Should().BeAssignableTo <Task>();
        }
Exemplo n.º 24
0
        protected override async Task <bool> WriteNativeAsync(byte[] data, CharacteristicWriteType writeType)
        {
            _nativeCharacteristic.WriteType = writeType.ToNative();

            if (writeType == CharacteristicWriteType.WithoutResponse)
            {
                return(InternalWrite(data));
            }

            return(await TaskBuilder.FromEvent <bool, EventHandler <CharacteristicWriteCallbackEventArgs>, EventHandler>(
                       execute : () => InternalWrite(data),
                       getCompleteHandler : (complete, reject) => ((sender, args) =>
            {
                if (args.Characteristic.Uuid == _nativeCharacteristic.Uuid)
                {
                    complete(args.Exception == null);
                }
            }),
                       subscribeComplete : handler => _gattCallback.CharacteristicValueWritten += handler,
                       unsubscribeComplete : handler => _gattCallback.CharacteristicValueWritten -= handler,
                       getRejectHandler : reject => ((sender, args) =>
            {
                reject(new Exception($"Device '{Service.Device.Id}' disconnected while writing characteristic with {Id}."));
            }),
                       subscribeReject : handler => _gattCallback.ConnectionInterrupted += handler,
                       unsubscribeReject : handler => _gattCallback.ConnectionInterrupted -= handler));
        }
Exemplo n.º 25
0
        protected override Task WriteNativeAsync(Byte[] data)
        {
            return(TaskBuilder.FromEvent <Boolean, EventHandler <DescriptorCallbackEventArgs>, EventHandler>(
                       () => this.InternalWrite(data),
                       (complete, reject) => (sender, args) =>
            {
                if (args.Descriptor.Uuid != this._nativeDescriptor.Uuid)
                {
                    return;
                }

                if (args.Exception != null)
                {
                    reject(args.Exception);
                }
                else
                {
                    complete(true);
                }
            },
                       handler => this._gattCallback.DescriptorValueWritten += handler,
                       handler => this._gattCallback.DescriptorValueWritten -= handler,
                       reject => (sender, args) =>
            {
                reject(new Exception(
                           $"Device '{this.Characteristic.Service.Device.Id}' disconnected while writing descriptor with {this.Id}."));
            },
                       handler => this._gattCallback.ConnectionInterrupted += handler,
                       handler => this._gattCallback.ConnectionInterrupted -= handler));
        }
Exemplo n.º 26
0
 /// <summary>
 /// Condition the specified builder and function.
 /// </summary>
 /// <returns>The condition.</returns>
 /// <param name="builder">Builder.</param>
 /// <param name="function">Function.</param>
 /// <typeparam name="T">The 1st type parameter.</typeparam>
 public static TaskBuilder <T> Condition <T>
 (
     this TaskBuilder <T> builder,
     TaskCondition <T> .Delegate function
 )
 {
     return(builder.Push(new TaskCondition <T>(function)));
 }
Exemplo n.º 27
0
 /// <summary>
 /// Wait the specified builder and duration.
 /// </summary>
 /// <returns>The wait.</returns>
 /// <param name="builder">Builder.</param>
 /// <param name="duration">Duration.</param>
 /// <typeparam name="T">The 1st type parameter.</typeparam>
 public static TaskBuilder <T> Wait <T>
 (
     this TaskBuilder <T> builder,
     float duration
 )
 {
     return(builder.Push(new TaskWait <T>(duration)));
 }
 public void TestMethod1()
 {
     BilibiliVideoFetcher.Classes.BilibiliVideoInfo info;
     Console.WriteLine(info = TaskBuilder.GetVideoInfoFromNativeApi(11292577));
     Assert.AreEqual(info.Code, 0);
     Console.WriteLine(info = TaskBuilder.GetVideoInfoFromNativeApi(11292578));
     Assert.IsTrue(info.Code < 0);
 }
Exemplo n.º 29
0
 /// <summary>
 /// Action the specified builder and action.
 /// </summary>
 /// <returns>The action.</returns>
 /// <param name="builder">Builder.</param>
 /// <param name="action">Action.</param>
 /// <typeparam name="T">The 1st type parameter.</typeparam>
 public static TaskBuilder <T> Action <T>
 (
     this TaskBuilder <T> builder,
     TaskAction <T> .Delegate action
 )
 {
     return(builder.Push(new TaskAction <T>(action)));
 }
Exemplo n.º 30
0
        public void TestMethod1()
        {
            var file = Path.Combine(Directory.GetCurrentDirectory(), "../../../../../../tasks/VSTeamServicesTaskGenerator/bin/Debug/net452/win7-x64/VSTeamServicesTaskGenerator.exe");

            if (File.Exists(file))
            {
                Console.WriteLine(TaskBuilder.BuildTask(file).ToString(Newtonsoft.Json.Formatting.Indented));
            }
        }
Exemplo n.º 31
0
 /// <summary>
 /// Wait the specified builder, min and max.
 /// </summary>
 /// <returns>The wait.</returns>
 /// <param name="builder">Builder.</param>
 /// <param name="min">Minimum.</param>
 /// <param name="max">Max.</param>
 /// <typeparam name="T">The 1st type parameter.</typeparam>
 public static TaskBuilder <T> Wait <T>
 (
     this TaskBuilder <T> builder,
     float min,
     float max
 )
 {
     return(builder.Push(new TaskWait <T>(min, max)));
 }
Exemplo n.º 32
0
        public void WhenGivenATaskTypeWithServicesInConstructor_CanBuildIt()
        {
            var kernel = new StandardKernel();
            kernel.Bind<IMyService>().To<TestMyService>();

            var builder = new TaskBuilder(kernel);
            var task = builder.BuildTask<TestTaskRequiringService> ();

            Assert.IsNotNull (task);
            Assert.IsInstanceOf(typeof(TestMyService), task.Service);
        }
        public async Task ParseAndExecuteDeploymentTasks_Failed()
        {
            var client = new FakeHttpClient();
            client.AddResponse("/network/networkDomain/d5791a6d-2b69-47e2-be06-f26a2ec4bff8", "NetworkDomain_Get.json");
            client.AddResponse("/network/vlan?networkDomainId=d5791a6d-2b69-47e2-be06-f26a2ec4bff8&name=Unit Test VLAN", "GenericNotFound.json");
            client.AddResponse("/network/deployVlan", "GenericError.json", HttpStatusCode.BadRequest);

            var templateFile = Path.Combine(_resourceFolder, "StandardTemplate.json");
            var parametersFile = Path.Combine(_resourceFolder, "StandardTemplateParams.json");
            var taskBuilder = new TaskBuilder();
            var taskExecutor = taskBuilder.BuildTasksFromDeploymentTemplate(templateFile, parametersFile);
            var log = await taskExecutor.Execute(_runtimeContext);

            Assert.AreEqual(DeploymentLogStatus.Failed, log.Status);
            Assert.AreEqual(1, log.Resources.Count);
            Assert.AreEqual(ResourceLogStatus.Failed, log.Resources[0].DeploymentStatus);
            Assert.AreEqual("UNEXPECTED_ERROR", log.Resources[0].Error.ResponseCode);
        }
Exemplo n.º 34
0
        public void CreateTask_ReturnsCorrect_DueDateAndSubjectAndTags()
        {
            string[] args = "Köp vin till festen -p -tm".Split(' ');

              var argumentsParserMock = new Mock<IArgumentParser>();
              argumentsParserMock.Setup(a => a.GetSubject(It.IsAny<string[]>())).Returns("Köp vin till festen");

              var optionsParserMock = new Mock<IOptionsParser>();
              optionsParserMock.SetupGet(o => o.DueDate).Returns(DateTime.Parse("2012-11-16"));
              optionsParserMock.SetupGet(o => o.Tags).Returns(new List<string> {"Personal"});

              ITaskBuilder tb = new TaskBuilder(args, argumentsParserMock.Object, optionsParserMock.Object);

              ITaskDTO task = tb.CreateTask();

              Assert.Equal(DateTime.Parse("2012-11-16"), task.DueDate);
              Assert.Equal("Köp vin till festen", task.Subject);
              argumentsParserMock.VerifyAll();
              optionsParserMock.VerifyAll();
        }
Exemplo n.º 35
0
        private static void Main(string[] args)
        {
            ContainerBootstrapper.BootstrapStructureMap(args);

              IContainer container = ObjectFactory.Container;
              IList<ITaskManager> taskManagers = container.GetAllInstances<ITaskManager>();

              if (ShouldUsageBeShown(args)) {
            ShowUsage(taskManagers);
            return;
              }

              var argumentParser = ObjectFactory.GetInstance<IArgumentParser>();
              var optionParser = ObjectFactory.GetInstance<IOptionsParser>();

              ITaskBuilder taskBuilder = new TaskBuilder(args, argumentParser, optionParser);
              ITaskDTO taskDto = taskBuilder.CreateTask();
              bool taskCreated = false;

              ITaskManager taskManagerToRun = ProviderMatcher.GetMatchingTaskManager(args, taskManagers);
              taskManagerToRun.CreateTask(taskDto);
        }
Exemplo n.º 36
0
        public void Task_can_be_added_to_BacklogItem()
        {
            var addViewTask = new TaskBuilder()
                .WithName("Create asp.net mvc listview")
                .OwnedBy("Stijn Volders")
                .WithEstimatedHours(2)
                .Build();

            var createControllerMethodsTask = new TaskBuilder()
                .WithName("Create BacklogItemController with listview support")
                .OwnedBy("Stijn Volders")
                .WithEstimatedHours(1)
                .Build();

            var backLogItem = _session.Load<BacklogItem>(1);

            backLogItem.AddTask(addViewTask);
            backLogItem.AddTask(createControllerMethodsTask);

            _session.SaveChanges();

            Assert.IsTrue(backLogItem.Tasks.Any());
        }
Exemplo n.º 37
0
        public void WhenGivenATaskType_CanBuildIt()
        {
            var task = new TaskBuilder ().BuildTask<TestTask> ();

            Assert.IsNotNull (task);
        }
        public async Task ParseAndExecuteDeletionTasks_Failed()
        {
            var client = new FakeHttpClient();
            client.AddResponse("/network/deleteNatRule", "NatRule_Delete.json");
            client.AddResponse("/network/natRule/a6b2e743-e330-4deb-a76e-0d9cb0b1d1bb", "NatRule_Get_NotFound.json", HttpStatusCode.BadRequest);
            client.AddResponse("/network/removePublicIpBlock", "GenericError.json", HttpStatusCode.BadRequest);

            var logFile = Path.Combine(_resourceFolder, "StandardTemplateLog.json");
            var taskBuilder = new TaskBuilder();
            var taskExecutor = taskBuilder.BuildTasksFromDeploymentLog(logFile);
            var log = await taskExecutor.Execute(_runtimeContext);

            Assert.AreEqual(DeploymentLogStatus.Failed, log.Status);
            Assert.AreEqual(2, log.Resources.Count);
            Assert.AreEqual(ResourceLogStatus.Deleted, log.Resources[0].DeploymentStatus);
            Assert.AreEqual(ResourceLogStatus.Failed, log.Resources[1].DeploymentStatus);
            Assert.AreEqual("UNEXPECTED_ERROR", log.Resources[1].Error.ResponseCode);
        }
 public void CircularDependency()
 {
     var templateFile = Path.Combine(_resourceFolder, "CircularDependency.json");
     var parametersFile = Path.Combine(_resourceFolder, "StandardTemplateParams.json");
     var taskBuilder = new TaskBuilder();
     var taskExecutor = taskBuilder.BuildTasksFromDeploymentTemplate(templateFile, parametersFile);
 }
Exemplo n.º 40
0
 public void Save(Loan loan, SqlTransaction transaction)
 {
     var taskBuilder = new TaskBuilder();
     taskBuilder.CreateLoanApprovalTasks(loan);
 }
        public async Task ParseAndExecuteDeletionTasks_Success()
        {
            var client = new FakeHttpClient();
            client.AddResponse("/network/deleteNatRule", "NatRule_Delete.json");
            client.AddResponse("/network/natRule/a6b2e743-e330-4deb-a76e-0d9cb0b1d1bb", "NatRule_Get_NotFound.json", HttpStatusCode.BadRequest);
            client.AddResponse("/network/removePublicIpBlock", "PublicIpBlock_Delete.json");
            client.AddResponse("/network/publicIpBlock/996b066e-bdce-11e4-8c14-b8ca3a5d9ef8", "PublicIpBlock_Get_NotFound.json", HttpStatusCode.BadRequest);
            client.AddResponse("/server/deleteServer", "Server_Delete.json");
            client.AddResponse("/server/server/b42b40e1-351a-4df9-b726-2ccff01f2767", "Server_Get_NotFound.json", HttpStatusCode.BadRequest);
            client.AddResponse("/network/deleteVlan", "Vlan_Delete.json");
            client.AddResponse("/network/vlan/997e2084-00b1-4d1d-96ce-099946679c6f", "Vlan_Get_NotFound.json", HttpStatusCode.BadRequest);

            var logFile = Path.Combine(_resourceFolder, "StandardTemplateLog.json");
            var taskBuilder = new TaskBuilder();
            var taskExecutor = taskBuilder.BuildTasksFromDeploymentLog(logFile);
            var log = await taskExecutor.Execute(_runtimeContext);

            Assert.AreEqual(DeploymentLogStatus.Success, log.Status);
        }