Exemplo n.º 1
0
 public static bool TryParse(string fileContents, out PtrFile file)
 {
     file = new PtrFile();
     if (fileContents.StartsWith("MSG: "))
     {
         file.Message = fileContents.Substring(5);
     }
     else if (fileContents.StartsWith("PATH:"))
     {
         file.Path = fileContents.Substring(5);
     }
     else
     {
         file = null;
         return(false);
     }
     return(true);
 }
Exemplo n.º 2
0
 public static bool TryParse(string fileContents, out PtrFile file)
 {
     file = new PtrFile();
     if (fileContents.StartsWith("MSG: "))
     {
         file.Message = fileContents.Substring(5);
     }
     else if (fileContents.StartsWith("PATH:"))
     {
         file.Path = fileContents.Substring(5);
     }
     else
     {
         file = null;
         return false;
     }
     return true;
 }
Exemplo n.º 3
0
        private bool TryGetFileLocal(string fileName, string indexString, SymStoreResult result, out Stream fileData)
        {
            fileData = null;
            string errorMessage = null;
            Uri    request      = new Uri(StoreRootAddress, fileName + "/" + indexString + "/" + fileName);

            //We could do better and actually calculate the backing path
            if (result.OriginalPath == null)
            {
                result.OriginalPath = request.ToString();
            }

            if (TryGetDataForUri(request, out fileData, out errorMessage))
            {
                result.CachedPath = request.AbsolutePath;
                result.MessageLog.Add("Retrieved " + request);
                return(true);
            }
            else
            {
                result.MessageLog.Add(request.ToString() + " [" + errorMessage + "]");
            }

            string fileNameUnderBar   = fileName.Substring(0, fileName.Length - 1) + "_";
            Uri    requestUnderBar    = new Uri(StoreRootAddress, fileName + "/" + indexString + "/" + fileNameUnderBar);
            Stream compressedFileData = null;

            if (TryGetDataForUri(requestUnderBar, out compressedFileData, out errorMessage))
            {
                fileData          = CabUnpacker.Unpack(compressedFileData);
                result.CachedPath = requestUnderBar.AbsolutePath;
                result.MessageLog.Add("Retrieved " + requestUnderBar);
                return(true);
            }
            else
            {
                result.MessageLog.Add(requestUnderBar.ToString() + " [" + errorMessage + "]");
            }

            Uri     requestPtr = new Uri(StoreRootAddress, fileName + "/" + indexString + "/file.ptr");
            Stream  ptrFileData;
            PtrFile ptr;

            if (!TryGetDataForUri(requestPtr, out ptrFileData, out errorMessage))
            {
                result.MessageLog.Add(requestPtr.ToString() + " [" + errorMessage + "]");
                return(false);
            }
            else if (!PtrFile.TryParse(new StreamReader(ptrFileData).ReadToEnd(), out ptr))
            {
                result.MessageLog.Add(requestPtr.ToString() + " [Unable to parse]");
                return(false);
            }
            else
            {
                result.MessageLog.Add(requestPtr.ToString() + " [Redirecting search]");
                result.MessageLog.Add("    Path: " + ptr.Path);
                if (!string.IsNullOrWhiteSpace(ptr.Message))
                {
                    result.MessageLog.Add("    Msg: " + ptr.Message);
                }
            }
            try
            {
                fileData          = File.OpenRead(ptr.Path);
                result.CachedPath = ptr.Path;
            }
            catch (IOException e)
            {
                result.MessageLog.Add(ptr.Path + " [" + e.ToString() + "]");
                return(false);
            }

            return(true);
        }