public void PostProbeData_ValidProbeVehicleData_Success() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork imuow = new UnitOfWork(idtoFakeContext)) { AddTripToRepo(imuow); DateTime newestPositionTimestamp = DateTime.UtcNow.AddMinutes(1); var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); long newestTimeStamp = Convert.ToInt64((newestPositionTimestamp - epoch).TotalMilliseconds); ProbeVehicleData probeData = new ProbeVehicleData { InboundVehicle = "MDT2" }; PositionSnapshot ps = new PositionSnapshot() { Accuracy = 5, Altitude = 123, Heading = 180, Latitude = 44.646581369493, Longitude = -96.6830267664, Satellites = 0, Speed = 14.77999305725097, TimeStamp = newestTimeStamp }; probeData.Positions.Add(ps); var mockTable = new Mock <IAzureTable <ProbeSnapshotEntry> >(); var cut = new ProbeController(idtoFakeContext, mockTable.Object); SetupControllerForTests(cut); HttpResponseMessage returnMessage = cut.PostProbeData(probeData); Assert.AreEqual(HttpStatusCode.NoContent, returnMessage.StatusCode); List <LastVehiclePosition> lvpList = imuow.Repository <LastVehiclePosition>().Query().Get().Where(v => v.VehicleName == "MDT2").ToList(); Assert.AreEqual(1, lvpList.Count); Assert.AreEqual(newestPositionTimestamp.ToLongTimeString(), lvpList.First().PositionTimestamp.ToLongTimeString()); } }
public async Task <string> CreatePositionSnapshot(string messsage, long timeStamp, string latitude, string longitute) { if (!messsage.StartsWith("M")) { // throw error... } var positionSnapshot = new PositionSnapshot { Message = messsage, Timestamp = timeStamp, Latitude = latitude, Longitude = longitute }; await this.db.PositionSnapshots.AddAsync(positionSnapshot); await this.db.SaveChangesAsync(); return(positionSnapshot.Id); }
void ISnapshotSerializer <PositionChangeMessage> .Serialize(Version version, PositionChangeMessage message, byte[] buffer) { if (version == null) { throw new ArgumentNullException(nameof(version)); } if (message == null) { throw new ArgumentNullException(nameof(message)); } var snapshot = new PositionSnapshot { SecurityId = message.SecurityId.ToStringId(), Portfolio = message.PortfolioName, LastChangeServerTime = message.ServerTime.To <long>(), LastChangeLocalTime = message.LocalTime.To <long>(), Currency = -1, State = -1, }; foreach (var change in message.Changes) { switch (change.Key) { case PositionChangeTypes.BeginValue: snapshot.BeginValue = (decimal)change.Value; break; case PositionChangeTypes.CurrentValue: snapshot.CurrentValue = (decimal)change.Value; break; case PositionChangeTypes.BlockedValue: snapshot.BlockedValue = (decimal)change.Value; break; case PositionChangeTypes.CurrentPrice: snapshot.CurrentPrice = (decimal)change.Value; break; case PositionChangeTypes.AveragePrice: snapshot.AveragePrice = (decimal)change.Value; break; case PositionChangeTypes.UnrealizedPnL: snapshot.UnrealizedPnL = (decimal)change.Value; break; case PositionChangeTypes.RealizedPnL: snapshot.RealizedPnL = (decimal)change.Value; break; case PositionChangeTypes.VariationMargin: snapshot.VariationMargin = (decimal)change.Value; break; case PositionChangeTypes.Currency: snapshot.Currency = (short)(CurrencyTypes)change.Value; break; case PositionChangeTypes.Leverage: snapshot.Leverage = (decimal)change.Value; break; case PositionChangeTypes.Commission: snapshot.Commission = (decimal)change.Value; break; case PositionChangeTypes.CurrentValueInLots: snapshot.CurrentValueInLots = (decimal)change.Value; break; case PositionChangeTypes.State: snapshot.State = (sbyte)(PortfolioStates)change.Value; break; } } var ptr = snapshot.StructToPtr(); Marshal.Copy(ptr, buffer, 0, _snapshotSize); Marshal.FreeHGlobal(ptr); }
byte[] ISnapshotSerializer <Key, PositionChangeMessage> .Serialize(Version version, PositionChangeMessage message) { if (version == null) { throw new ArgumentNullException(nameof(version)); } if (message == null) { throw new ArgumentNullException(nameof(message)); } var snapshot = new PositionSnapshot { SecurityId = message.SecurityId.ToStringId().VerifySize(Sizes.S100), Portfolio = message.PortfolioName.VerifySize(Sizes.S100), LastChangeServerTime = message.ServerTime.To <long>(), LastChangeLocalTime = message.LocalTime.To <long>(), DepoName = message.DepoName, LimitType = (int?)message.LimitType, BoardCode = message.BoardCode, ClientCode = message.ClientCode, Description = message.Description, StrategyId = message.StrategyId, Side = (int?)message.Side, BuildFrom = message.BuildFrom == null ? default(SnapshotDataType?) : (SnapshotDataType)message.BuildFrom, }; foreach (var change in message.Changes) { switch (change.Key) { case PositionChangeTypes.BeginValue: snapshot.BeginValue = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.CurrentValue: snapshot.CurrentValue = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.BlockedValue: snapshot.BlockedValue = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.CurrentPrice: snapshot.CurrentPrice = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.AveragePrice: snapshot.AveragePrice = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.UnrealizedPnL: snapshot.UnrealizedPnL = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.RealizedPnL: snapshot.RealizedPnL = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.VariationMargin: snapshot.VariationMargin = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.Currency: snapshot.Currency = (short)(CurrencyTypes)change.Value; break; case PositionChangeTypes.Leverage: snapshot.Leverage = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.Commission: snapshot.Commission = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.CurrentValueInLots: snapshot.CurrentValueInLots = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.State: snapshot.State = (byte)(PortfolioStates)change.Value; break; case PositionChangeTypes.ExpirationDate: snapshot.ExpirationDate = change.Value.To <long?>(); break; case PositionChangeTypes.CommissionTaker: snapshot.CommissionTaker = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.CommissionMaker: snapshot.CommissionMaker = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.SettlementPrice: snapshot.SettlementPrice = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.BuyOrdersCount: snapshot.BuyOrdersCount = (int)change.Value; break; case PositionChangeTypes.SellOrdersCount: snapshot.SellOrdersCount = (int)change.Value; break; case PositionChangeTypes.BuyOrdersMargin: snapshot.BuyOrdersMargin = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.SellOrdersMargin: snapshot.SellOrdersMargin = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.OrdersMargin: snapshot.OrdersMargin = (BlittableDecimal)(decimal)change.Value; break; case PositionChangeTypes.OrdersCount: snapshot.OrdersCount = (int)change.Value; break; case PositionChangeTypes.TradesCount: snapshot.TradesCount = (int)change.Value; break; default: throw new InvalidOperationException(change.Key.To <string>()); } } var buffer = new byte[typeof(PositionSnapshot).SizeOf()]; var ptr = snapshot.StructToPtr(); ptr.CopyTo(buffer); ptr.FreeHGlobal(); return(buffer); }
// see https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking private void GetSnapshotBeforeAndAfter(long time, out PositionSnapshot before, out PositionSnapshot after) { before = after = null; // :( think about synchornizing access to _positions for (int i = _positions.Count - 1; i >= 0; i--) { var snapshot = _positions[i]; if (time >= snapshot.Timestamp) { before = snapshot; after = i != _positions.Count - 1 ? _positions[i + 1] : before; break; } } }
private void PrintImageForPosition(ChessGamePlayer player) { int width = 200; int height = 200; PositionSnapshot ps = new PositionSnapshot (player. GetPosition (), width, height); ps.DrawMove (player.LastMoveInfo.src_rank, player.LastMoveInfo.src_file, player.LastMoveInfo.dest_rank, player.LastMoveInfo.dest_file); Gdk.Pixbuf image = Gdk.Pixbuf.FromDrawable (ps.Pixmap, ps.Pixmap. Colormap, 0, 0, 0, 0, width, height); printer.PrintImage (image); }
public void CaptureSuccessfulJumpSnapshot() { _lastSuccessfulJumpPosition = PositionSnapshot.FromObject(_flippable); _lastAttemptedJumpPosition = _lastSuccessfulJumpPosition; }