internal static TransferEventArgs Read(CustomLogReader areader) { TransferEventArgs args = new TransferEventArgs(); using (ElementLogReader reader = new ElementLogReader(areader)) { while (reader.Read(0)) { string value; if (reader.GetEmptyElementValue("filename", out value)) { args.FileName = value; } else if (reader.GetEmptyElementValue("destination", out value)) { args.Destination = value; } else if (SessionRemoteException.IsResult(reader)) { args.Error = SessionRemoteException.ReadResult(reader); } } } return(args); }
internal static TouchEventArgs Read(CustomLogReader areader) { TouchEventArgs args = new TouchEventArgs(); using (ElementLogReader reader = new ElementLogReader(areader)) { while (reader.Read(0)) { string value; if (reader.GetEmptyElementValue("filename", out value)) { args.FileName = value; } else if (reader.GetEmptyElementValue("modification", out value)) { args.LastWriteTime = XmlConvert.ToDateTime(value, XmlDateTimeSerializationMode.Local); } else if (SessionRemoteException.IsResult(reader)) { args.Error = SessionRemoteException.ReadResult(reader); } } } return(args); }
public override bool Read(LogReadFlags flags) { using (Session.Logger.CreateCallstack()) { bool result; bool retry; do { result = DoRead(); retry = false; if (result && IsNonEmptyElement("failure")) { SessionRemoteException e = SessionRemoteException.ReadFailure(this); Session.RaiseFailed(e); if ((flags & LogReadFlags.ThrowFailures) == 0) { retry = true; } else { throw e; } } }while (retry); return(result); } }
internal static ChmodEventArgs Read(CustomLogReader areader) { ChmodEventArgs args = new ChmodEventArgs(); using (ElementLogReader reader = new ElementLogReader(areader)) { while (reader.Read(0)) { if (reader.GetEmptyElementValue("filename", out string value)) { args.FileName = value; } else if (reader.GetEmptyElementValue("permissions", out value)) { args.FilePermissions = FilePermissions.CreateReadOnlyFromText(value); } else if (SessionRemoteException.IsResult(reader)) { args.Error = SessionRemoteException.ReadResult(reader); } } } return(args); }
internal static TransferEventArgs Read(ProgressSide side, CustomLogReader areader) { TransferEventArgs args = new TransferEventArgs() { Side = side }; using (ElementLogReader reader = new ElementLogReader(areader)) { while (reader.Read(0)) { if (reader.GetEmptyElementValue("filename", out string value)) { args.FileName = value; } else if (reader.GetEmptyElementValue("destination", out value)) { args.Destination = value; } else if (reader.GetEmptyElementValue("size", out value)) { args.Length = long.Parse(value, CultureInfo.InvariantCulture); } else if (SessionRemoteException.IsResult(reader)) { args.Error = SessionRemoteException.ReadResult(reader); } } } return(args); }
internal static SessionRemoteException ReadResult(CustomLogReader areader) { SessionRemoteException e = null; if (areader.GetAttribute("success") == "false") { e = ReadMessages(areader); } return(e); }
private static SessionRemoteException ReadMessages(CustomLogReader areader) { using (ElementLogReader reader = new ElementLogReader(areader)) { string error = null; string message = null; List <string> messages = new List <string>(); bool inMessage = false; while (reader.Read(0)) { if (reader.IsNonEmptyElement("message")) { inMessage = true; message = null; } else if (inMessage && (reader.NodeType == XmlNodeType.Text)) { message += reader.Value; } else if (inMessage && reader.IsEndElement("message")) { if (error == null) { error = message; } else { messages.Add(message); } message = null; inMessage = false; } } Exception inner = null; if (messages.Count > 0) { inner = new SessionRemoteException(reader.Session, string.Join(Environment.NewLine, messages.ToArray())); } return(new SessionRemoteException(reader.Session, error, inner)); } }
internal void AddFailure(SessionRemoteException failure) { Failures.InternalAdd(failure); }
internal void RaiseFailed(SessionRemoteException e) { Logger.WriteLine("Failed: [{0}]", e); if (Failed != null) { Failed(this, new FailedEventArgs { Error = e }); } foreach (OperationResultBase operationResult in _operationResults) { operationResult.AddFailure(e); } }
private static SessionRemoteException ReadMessages(CustomLogReader areader) { using (ElementLogReader reader = new ElementLogReader(areader)) { string error = null; string message = null; List<string> messages = new List<string>(); bool inMessage = false; while (reader.Read(0)) { if (reader.IsNonEmptyElement("message")) { inMessage = true; message = null; } else if (inMessage && (reader.NodeType == XmlNodeType.Text)) { message += reader.Value; } else if (inMessage && reader.IsEndElement("message")) { if (error == null) { error = message; } else { messages.Add(message); } message = null; inMessage = false; } } Exception inner = null; if (messages.Count > 0) { inner = new SessionRemoteException(reader.Session, string.Join(Environment.NewLine, messages.ToArray())); } return new SessionRemoteException(reader.Session, error, inner); } }