/// <summary> 写入错误日志 /// </summary> /// <param name="protocol">上传文件协议</param> public static void WriteErrorLog(FileProtocol protocol) { string msg = string.Empty; if (htTable.ContainsKey(protocol.SubMessageId)) { string tableName = string.Empty; //表名: foreach (DictionaryEntry de in htTable) { if (de.Value.ToString() == protocol.SubMessageId) { tableName = de.Key.ToString(); break; } } msg += "表名:" + tableName + "\r\n"; } msg += "标识:" + protocol.StationId + protocol.SerialNumber + protocol.TimeSpan + "\r\n"; msg += "时间:" + TimeHelper.MillisToTime(protocol.TimeSpan) + "\r\n"; msg += "服务站ID:" + protocol.StationId + "\r\n"; msg += "内容:" + ProtocolTranslator.SerilizeMessage(protocol); //写错误日志 Log.writeCloudLog(msg); }
/// <summary> 操作数据 /// </summary> /// <param name="dt">数据表</param> /// <param name="operation">操作类别</param> /// <param name="dbName">帐套</param> private static void Operation(DataTable dt, string operation, string dbName) { if (dt == null) { return; } string path = string.Empty; foreach (DataRow dr in dt.Rows) { FileProtocol protocol = GetProtocol(dr, dbName); if (protocol != null) { protocol.Operation = operation; if (operation == DataSources.EnumOperationType.Add.ToString("d") || operation == DataSources.EnumOperationType.Update.ToString("d")) { FileModel file = FileModel.CreateModel(dr); protocol.FileId = file.Id; protocol.FileType = file.FileType; path = GlobalStaticObj_Server.Instance.FilePath + "\\" + file.Path; //上传文件信息 byte[] files = FileHelper.GetFileInByte(path); if (files == null) { continue; } protocol.File = ProtocolTranslator.ByteToHex(files); } FileAgent.AddSendQueue(protocol); } } }
/// <summary> 写入错误日志 /// </summary> /// <param name="protocol">上传数据协议</param> public static void WriteErrorLog(UploadDataProtocol protocol) { string msg = string.Empty; msg += "表名:" + TableName + "\r\n"; msg += "标识:" + protocol.StationId + protocol.SerialNumber + protocol.TimeSpan + "\r\n"; msg += "时间:" + TimeHelper.MillisToTime(protocol.TimeSpan) + "\r\n"; msg += "服务站ID:" + protocol.StationId + "\r\n"; msg += "内容:" + ProtocolTranslator.SerilizeMessage(protocol); //写错误日志 Log.writeCloudLog(msg); }
public async Task Shoot() { // This test verifies the entire shooting protocol from the // BattleHostConnection's view. var logger = Mock.Of <ILogger <BattleHostConnection> >(); var stream = new Mock <IServerStreamWriter <GameRequest> >(); GameRequest?gameRequest = null; stream.Setup(s => s.WriteAsync(It.IsAny <GameRequest>())) .Callback <GameRequest>(gr => gameRequest = gr) .Returns(Task.FromResult(0)); var factory = new Mock <IGameFactory>(); factory.Setup(f => f.Create(It.IsAny <int>(), It.IsAny <int>())).Returns(CreateGame()); // Create connection and start game var bhc = new BattleHostConnection(factory.Object, logger); bhc.Connect(stream.Object); bhc.StartGame(47, 11); Assert.NotNull(bhc.Game); // Simulate shooting of player 1 var shootTask = bhc.Shoot(1); Assert.False(shootTask.IsCompleted); Assert.NotNull(gameRequest); Assert.Equal(GameRequest.PayloadOneofCase.ShotRequest, gameRequest !.PayloadCase); Assert.NotNull(gameRequest.ShotRequest); Assert.Empty(gameRequest.ShotRequest.LastShot); Assert.Equal(SquareContent.Unknown, bhc.Game !.ShootingBoards[0][new BoardIndex(0, 0)]); // Simulate incoming shot result await bhc.Handle(ProtocolTranslator.EncodeShotResponse(new(Guid.Empty, new BoardIndex(0, 0)))); Assert.False(shootTask.IsCompleted); Assert.Equal(SquareContent.Water, bhc.Game !.ShootingBoards[0][new BoardIndex(0, 0)]); // Simulate incoming shot ack await bhc.Handle(ProtocolTranslator.EncodeShotResultAck()); Assert.True(shootTask.IsCompleted); }
public async Task StartConsoleGame(ConsoleGameOptions options) { var logger = Log.Logger.ForContext <ConsoleGameMain>(); if (options.Player1Index < 0 || options.Player1Index >= PlayerList.Players.Length) { logger.Error("Player 1 index is invalid. Must be between 1 and {NumberOfPlayers}", PlayerList.Players.Length - 1); } if (options.Player2Index < 0 || options.Player2Index >= PlayerList.Players.Length) { logger.Error("Player 2 index is invalid. Must be between 1 and {NumberOfPlayers}", PlayerList.Players.Length - 1); } var gf = new GameFactory(new RandomBoardFiller()); var game = gf.Create(options.Player1Index, options.Player2Index); while (game.GetWinner(BattleshipBoard.Ships) == Winner.NoWinner) { var p1 = PlayerList.Players[options.Player1Index].Create(); var shotRequest = ProtocolTranslator.DecodeShotRequest(ProtocolTranslator.EncodeShotRequest( new Logic.ShotRequest(game.GameId, options.Player1Index, options.Player2Index, game.ShootingBoards[0], game.GetLastShot(1))).ShotRequest); p1.LastShot = shotRequest.LastShot; await p1.GetShot(shotRequest.GameId, PlayerList.Players[shotRequest.Shooter].Name, shotRequest.BoardShooterView, location => Task.FromResult(game.Shoot(1, location))); var p2 = PlayerList.Players[options.Player2Index].Create(); shotRequest = ProtocolTranslator.DecodeShotRequest(ProtocolTranslator.EncodeShotRequest( new Logic.ShotRequest(game.GameId, options.Player2Index, options.Player1Index, game.ShootingBoards[1], game.GetLastShot(2))).ShotRequest); p2.LastShot = shotRequest.LastShot; await p2.GetShot(game.GameId, PlayerList.Players[shotRequest.Shooter].Name, shotRequest.BoardShooterView, location => Task.FromResult(game.Shoot(2, location))); } Console.WriteLine(game.GetWinner(BattleshipBoard.Ships) switch { Winner.Draw => "We have a draw!", Winner.Player1 => "Player 1 is the winner", Winner.Player2 => "Player 2 is the winner", _ => "No winner? this should never happen" });
public void Init() { _fixture = new Fixture(); _sut = new ProtocolTranslator(); }