Exemplo n.º 1
0
 private void CheckNextFile()
 {
     try
     {
         _currentServerFile++;
         if (_currentServerFile == _serverFiles.Count())
         {
             OpenVPMobile();
             return;
         }
         if (_serverFiles != null || _serverFiles.Count() > 0)
         {
             UpdateFileInfo f = _serverFiles[_currentServerFile];
             CurrentFile = "Checking file:  " + Path.GetFileName(f.FileName);
             string filePath = Path.Combine(CurrentMobileDirectory, f.RelativeFilePath);
             if (!Directory.Exists(Path.GetDirectoryName(filePath)))
             {
                 Directory.CreateDirectory(Path.GetDirectoryName(filePath));
             }
             if (!File.Exists(filePath) || File.GetLastWriteTimeUtc(filePath).CompareTo(f.FileDate) < 0)
             {
                 Logging.LogMessage(Logging.LogType.Info, f.FileName + " - Local: " + File.GetLastWriteTimeUtc(filePath).ToString("MM/dd hh:mm:ss.ffff") + " || Server: " + f.FileDate.ToString("MM/dd hh:mm:ss.ffff"));
                 CurrentFile = "Updating file:  " + Path.GetFileName(f.FileName);
                 MobileService.GetMainUpdateFileAsync(f.RelativeFilePath, filePath);
             }
             else
             {
                 CheckNextFile();
             }
         }
     }
     catch (Exception ex)
     {
         var message = "Error checking file";
         Logging.LogMessage(Logging.LogType.Error, message, ex);
     }
 }
Exemplo n.º 2
0
        private void GetUpdateFile_Completed(object sender, GetMainUpdateFileCompletedEventArgs e)
        {
            try
            {
                if (e.Error != null)
                {
                    if (e.Error.InnerException is WebException && ((WebException)e.Error.InnerException).Status == WebExceptionStatus.RequestCanceled)
                    {
                        Thread sep = new Thread((ThreadStart)(() =>
                        {
                            try
                            {
                                Uri folder = new Uri(CurrentMobileDirectory);
                                string s = Uri.UnescapeDataString(folder.MakeRelativeUri(new Uri(e.UserState.ToString())).ToString().Replace('/', Path.DirectorySeparatorChar));
                                MobileService.GetMainUpdateFileAsync(s, e.UserState);
                            }
                            catch (Exception ex2)
                            {
                                var message = "Error pulling file from server";
                                Logging.LogMessage(Logging.LogType.Error, message, ex2);
                            }
                        }));
                        sep.Start();
                    }
                    else if (e.Error is CommunicationException && e.Error.Message.Equals("The underlying connection was closed: A connection that was expected to be kept alive was closed by the server."))
                    {
                        OnNetworkDisconnect(e.Error);
                    }
                    else if (e.Error is EndpointNotFoundException)
                    {
                        OnNetworkDisconnect(e.Error);
                    }
                    else
                    {
                        if (!_closing)
                        {
                            MessageBox.Show("Error updating file - " + e.UserState.ToString() + ": " + e.Error.ToString());
                        }
                    }
                }
                else
                {
                    if (e.Result != null)
                    {
                        File.WriteAllBytes(e.UserState.ToString(), e.Result);
                    }

                    CurrentFile = "Updated file:  " + Path.GetFileName(e.UserState.ToString());
                }
                CheckNextFile();
            }
            catch (EndpointNotFoundException ex)
            {
                OnNetworkDisconnect(ex);
            }
            catch (Exception ex)
            {
                var message = "Error updating file";
                Logging.LogMessage(Logging.LogType.Error, message, ex);
                if (!_closing)
                {
                    MessageBox.Show(ex.ToString());
                    OpenVPMobile();
                }
            }
        }