Exemplo n.º 1
0
        public async Task <Guid> UpdateVehicle([FromBody] Vehicle vehicleToUpdate)
        {
            ServiceEventSource.Current.Message("Updating Vehicle {0} from Web API method through its related ACTOR", vehicleToUpdate.Id);

            ActorId actorId = new ActorId(vehicleToUpdate.Id);

            IVehicleActor vehicleActor = ActorProxy.Create <IVehicleActor>(actorId, "VehiclesSFApp", "VehicleActorService");

            try
            {
                await vehicleActor.SetVehicleAsync(vehicleToUpdate);

                ServiceEventSource.Current.Message("VehicleActor created successfully. VehicleActorID: {0} - VehicleId", actorId, vehicleToUpdate.Id);
            }
            catch (InvalidOperationException ex)
            {
                ServiceEventSource.Current.Message("Web API: Actor rejected {0}: {1}", vehicleToUpdate, ex);
                throw;
            }
            catch (Exception ex)
            {
                ServiceEventSource.Current.Message("Web Service: Exception {0}: {1}", vehicleToUpdate, ex);
                throw;
            }

            return(vehicleToUpdate.Id);
        }
        public async Task Post([FromBody] VehicleRegistration registration)
        {
            try
            {
                var dict = await stateManager.GetOrAddAsync <IReliableDictionary <string, VehicleRegistration> >(LicensePlates);

                using (ITransaction tx = stateManager.CreateTransaction())
                {
                    await dict.AddOrUpdateAsync(tx, registration.LicensePlate, NoRegistration, (k, v) => v ?? NoRegistration);

                    await tx.CommitAsync();
                }

                ActorId       actorId = new ActorId(registration.LicensePlate);
                IVehicleActor proxy   = ActorProxy.Create <IVehicleActor>(
                    actorId, new Uri("fabric:/TrafficServiceFabric/VehicleActorService"));

                await proxy.AddRegistrationByCameraAsync(registration.TimeStamp);
            }
            catch (TimeoutException)
            {
                await Task.Delay(100);
                await Post(registration); //possible infiniteloop
            }
        }
Exemplo n.º 3
0
        public async Task <Vehicle> GetVehicle(Guid vehicleId)
        {
            ServiceEventSource.Current.Message("Called GetVehicle in STATELESS GATEWAY service to get a single Vehicle from its ACTOR");

            //Guid vehicleId = new Guid("cc164441-9a44-c0c1-208b-08d3a5f9941e");
            ActorId actorId = new ActorId(vehicleId);
            //ActorId actorId = ActorId.CreateRandom();

            // Create actor proxy and send the request
            IVehicleActor actorProxy = ActorProxy.Create <IVehicleActor>(actorId, "VehiclesSFApp", "VehicleActorService");

            //Get current data for this vehicle-actor
            Vehicle vehicle = await actorProxy.GetVehicleAsync();

            //IDummyActor actorProxy = ActorProxy.Create<IDummyActor>(actorId, "VehiclesSFApp", "DummyActorService");
            //int counter = await actorProxy.GetCountAsync();

            return(vehicle);
        }