Пример #1
0
        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);
        }
Пример #5
0
 // 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;
         }
     }
 }
Пример #6
0
            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);
            }
Пример #7
0
 public void CaptureSuccessfulJumpSnapshot()
 {
     _lastSuccessfulJumpPosition = PositionSnapshot.FromObject(_flippable);
     _lastAttemptedJumpPosition  = _lastSuccessfulJumpPosition;
 }