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 } }
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); }