コード例 #1
0
 public static IPCBuildResult Read(Stream stream)
 {
     using (var reader = new BinaryReader(stream))
     {
         var buildResult = new IPCBuildResult
         {
             Skipped     = reader.ReadBoolean(),
             ServerError = reader.ReadString(),
             ExitCode    = reader.ReadInt32()
         };
         var messages = new Message[reader.ReadInt32()];
         for (int m = 0; m < messages.Length; ++m)
         {
             messages[m] = new Message
             {
                 Kind       = (MessageKind)reader.ReadInt32(),
                 Text       = reader.ReadString(),
                 SourceFile = reader.ReadString(),
                 Line       = reader.ReadInt32(),
                 Column     = reader.ReadInt32()
             }
         }
         ;
         buildResult.ErrorMessages = messages;
         return(buildResult);
     }
 }
コード例 #2
0
ファイル: IPCBridge.cs プロジェクト: vsrad/radeon-asm-tools
        public IPCBuildResult Build()
        {
            _pipe.Connect(_pipeConnectionTimeout);
            var result = IPCBuildResult.Read(_pipe);

            _pipe.Close();
            return(result);
        }
コード例 #3
0
        private bool CheckBuildResult(IPCBuildResult result)
        {
            if (result.Skipped)
            {
                Log.LogMessage(MessageImportance.High, "Build skipped (executable is not set)");
                return(true);
            }
            if (!string.IsNullOrEmpty(result.ServerError))
            {
                Log.LogError(ServerErrorPrefix + result.ServerError);
                return(false);
            }

            foreach (var message in result.ErrorMessages)
            {
                switch (message.Kind)
                {
                case IPCBuildResult.MessageKind.Error:
                    Log.LogError(
                        subcategory: null, errorCode: null, helpKeyword: null,
                        message: message.Text, file: message.SourceFile,
                        lineNumber: message.Line, columnNumber: message.Column,
                        endLineNumber: 0, endColumnNumber: 0);
                    break;

                case IPCBuildResult.MessageKind.Warning:
                    Log.LogWarning(
                        subcategory: null, warningCode: null, helpKeyword: null,
                        message: message.Text, file: message.SourceFile,
                        lineNumber: message.Line, columnNumber: message.Column,
                        endLineNumber: 0, endColumnNumber: 0);
                    break;

                case IPCBuildResult.MessageKind.Note:
                    Log.LogWarning(
                        subcategory: null, warningCode: null, helpKeyword: null,
                        message: "note: " + message.Text, file: message.SourceFile,
                        lineNumber: message.Line, columnNumber: message.Column,
                        endLineNumber: 0, endColumnNumber: 0);
                    break;
                }
            }

            Log.LogMessage(MessageImportance.High, $"Build finished with exit code {result.ExitCode}");
            return(result.ExitCode == 0 && result.ErrorMessages.Length == 0);
        }
コード例 #4
0
ファイル: IPCBridge.cs プロジェクト: vsrad/radeon-asm-tools
 public IPCBridge(string project)
 {
     _pipe = new NamedPipeClientStream(".", IPCBuildResult.GetIPCPipeName(project), PipeDirection.In, PipeOptions.Asynchronous);
 }