protected override void Resume(object arg) { var response = (MovementPermission)this.response; while (!response.IsPermitted) { waitForResponseHandle.Reset(); Thread.Sleep(_movementRequestPollIntervalMs); Initiate(); waitForResponseHandle.WaitOne(); response = (MovementPermission)this.response; } VehiclesComponent.PublishVehicleMovement( new VehicleMovement { VehicleId = Vehicle.Id, VehicleType = Vehicle.Type, VertexFrom = _vertexFrom, VertexTo = _vertexTo, DurationMs = _movementTimeMs }); Thread.Sleep(_movementTimeMs); VehiclesComponent.PublishMovementEnd( new MovementEnd { VehicleId = Vehicle.Id, VertexFrom = _vertexFrom, VertexTo = _vertexTo, }); }
static void Main(string[] args) { var connFactory = new ConnectionFactory { HostName = "206.189.60.128" }; var connection = connFactory.CreateConnection(); var channel = connection.CreateModel(); VehiclesComponent.Initialize(channel, new System.Net.Http.HttpClient()); var cts = new CancellationTokenSource(); var ct = cts.Token; foreach (var vehicle in Garage.Vehicles) { Task.Run(() => vehicle.Run(ct)); } Console.WriteLine("Press enter to exit"); Console.ReadLine(); cts.Cancel(); channel.Dispose(); }
protected override void MakeRequest() { VehiclesComponent.PublishMovementRequest( new MovementRequest { VehicleId = Vehicle?.Id ?? Guid.Empty, VertexFrom = _vertexFrom, VertexTo = _vertexTo }); }
public void Initiate() { VehiclesComponent.AddWaitingAction(Vehicle?.Id ?? Guid.Empty, this); MakeRequest(); }