using System; namespace P4API { internal class P4ResultCallback : P4Callback { private P4BaseRecordSet _P4Result; public P4ResultCallback(P4BaseRecordSet p4Result) { this._P4Result = p4Result; } #region P4Callback Members public override void Diff(System.IO.FileInfo f1, System.IO.FileInfo f2, string diffFlags) { throw new Exceptions.DiffNotImplemented(); } public override void Edit(System.IO.FileInfo f1) { throw new P4API.Exceptions.FormCommandException(); } public override void Prompt(string msg, ref string rsp) { rsp = _P4Result.RaiseOnPromptEvent(msg); } //public override void Merge(System.IO.FileInfo baseFile, System.IO.FileInfo leg1, System.IO.FileInfo leg2, System.IO.FileInfo result) //{ // throw new Exceptions.MergeNotImplemented(); //} public override MergeAction ResolveFile(MergeData mergeData) { // don't handle a merge action here throw new Exceptions.MergeNotImplemented(); } public override void Finished() { _P4Result.SpecDef = base.SpecDef; _P4Result.Finished(); } public override void OutputInfo(string data) { _P4Result.AddInfo(data); } public override bool Cancel() { return false; } public override void OutputContent(byte[] buffer, bool IsText) { if (IsText) { string data = base.ContentEncoding.GetString(buffer); _P4Result.AddInfo(data); } else { _P4Result.BinaryOutput = buffer; } } public override void InputData(System.Text.StringBuilder buffer) { buffer.Append(_P4Result.InputData); } public override void OutputRecord(P4Record record) { _P4Result.AddRecord(record); } public override void OutputMessage(P4Message message) { //Console.WriteLine("{0}: {1}", (int)message.Severity, message.Identity); switch (message.Severity) { case P4MessageSeverity.Empty: // E_EMPTY (0) | no error _P4Result.AddString(message.Format()); break; case P4MessageSeverity.Info: // E_INFO (1) | information, not necessarily an error _P4Result.AddInfo(message.Format()); break; case P4MessageSeverity.Warning: // E_WARN (2) | a minor error occurred _P4Result.AddWarning(message.Format()); break; case P4MessageSeverity.Failed: // E_FAILED(3) | the command was used incorrectly _P4Result.AddError(message.Format()); break; case P4MessageSeverity.Fatal: // E_FATAL (4) | fatal error, the command can't be processed _P4Result.AddError(message.Format()); break; default: //TODO throw an error... unknown severity break; } } #endregion } }