public ServerNeighborhoodProvider([Named("ShardId")] int shardId, IRealestateDomain realestate, IDAFactory daFactory, IServerNFSProvider nfs) { OnMissingLazyLoad = true; OnLazyLoadCacheValue = false; ShardId = shardId; GlobalRealestate = realestate; Realestate = realestate.GetByShard(shardId); DAFactory = daFactory; NFS = nfs; }
/* * TODO: city data service access for desired shards. * Need to maintain connections to shards and request from their data services... * Either that or online status has to at least writeback to DB. */ public CityInfoController(IDAFactory daFactory, IServerNFSProvider nfs) : base("/userapi/city") { this.DAFactory = daFactory; this.NFS = nfs; this.After.AddItemToEndOfPipeline(x => { x.Response.WithHeader("Access-Control-Allow-Origin", "*"); }); this.Get["/{shardid}/{id}.png"] = parameters => { using (var da = daFactory.Get()) { var lot = da.Lots.GetByLocation((int)parameters.shardid, (uint)parameters.id); if (lot == null) { return(HttpStatusCode.NotFound); } return(Response.AsImage(Path.Combine(NFS.GetBaseDirectory(), "Lots/" + lot.lot_id.ToString("x8") + "/thumb.png"))); } }; this.Get["/{shardid}/city.json"] = parameters => { var now = Epoch.Now; if (LastModelUpdate < now - 15) { LastModelUpdate = now; lock (ModelLock) { LastModel = new CityInfoModel(); using (var da = daFactory.Get()) { var lots = da.Lots.AllLocations((int)parameters.shardid); var lotstatus = da.LotClaims.AllLocations((int)parameters.shardid); LastModel.reservedLots = lots.ConvertAll(x => x.location).ToArray(); LastModel.names = lots.ConvertAll(x => x.name).ToArray(); LastModel.activeLots = lotstatus.ConvertAll(x => x.location).ToArray(); LastModel.onlineCount = lotstatus.ConvertAll(x => x.active).ToArray(); } } } lock (ModelLock) { return(Response.AsJson(LastModel)); } }; }
public ServerLotProvider([Named("ShardId")] int shardId, IRealestateDomain realestate, IDAFactory daFactory, IServerNFSProvider nfs) { OnMissingLazyLoad = true; OnLazyLoadCacheValue = false; ShardId = shardId; GlobalRealestate = realestate; Realestate = realestate.GetByShard(shardId); DAFactory = daFactory; NFS = nfs; CityRepresentation = new City() { City_NeighborhoodsVec = ImmutableList.Create <uint>(), City_OnlineLotVector = ImmutableList.Create <bool>(), City_ReservedLotVector = ImmutableList.Create <bool>(), City_ReservedLotInfo = ImmutableDictionary.Create <uint, bool>(), City_SpotlightsVector = ImmutableList.Create <uint>(), City_Top100ListIDs = ImmutableList.Create <uint>(), City_TopTenNeighborhoodsVector = ImmutableList.Create <uint>() }; }