コード例 #1
0
        public long FourniReponse(Demande demande)
        {
            string fichierTampon;
            var    fichierTemp    = demande.Md5f.Md5 + ".temp";
            var    fichierDemandé = Dossier + "\\" + demande.Md5f.Chemin;
            var    infosFichier   = new FileInfo(fichierDemandé);
            var    taille         = infosFichier.Length;

            if (taille > C.TAILLE_MAX_FICHIER * 1024 * 1024)
            {
                fichierTampon = _dossierTamponSynchro + "\\" + demande.FichierReponse(U.ExtractFilePart(fichierDemandé, fichierTemp, demande.PartStart, C.TAILLE_MAX_FICHIER));

                if (!File.Exists(fichierTampon))
                {
                    File.Copy(fichierTemp, fichierTampon);
                }
            }
            else
            {
                fichierTampon = _dossierTamponSynchro + "\\" + demande.FichierReponse(0);
                if (!File.Exists(fichierTampon))
                {
                    File.Copy(fichierDemandé, fichierTampon);
                }
            }

            return(new FileInfo(fichierTampon).Length);
        }
コード例 #2
0
        /// <summary>
        /// Pose le fichier de demande dans le dossier tampon
        /// </summary>
        /// <param name="demande">Demande à faire</param>
        public void FaireDemande(Demande demande)
        {
            var fichierDemande = _dossierTamponSynchro + "\\" + demande.FichierDemande;

            if (!File.Exists(fichierDemande))
            {
                File.WriteAllText(fichierDemande, demande.Md5f.ToString());
            }
        }
コード例 #3
0
        public Demande[] GetDemandes()
        {
            var fichiersDemandes = Directory.GetFiles(_dossierTamponSynchro, "*." + C.EXT__DEMANDE, SearchOption.TopDirectoryOnly);
            var retour           = new Demande[fichiersDemandes.Length];
            var compteur         = 0;

            foreach (string fichierDemande in fichiersDemandes)
            {
                retour[compteur] = new Demande(fichierDemande);
                compteur++;
            }

            return(retour);
        }
コード例 #4
0
        /// <summary>
        /// Récupère la réponse à une demande
        /// </summary>
        /// <param name="demande">Demande faite par le client</param>
        /// <param name="fichierReponse">Fichier de réponse du maitre</param>
        /// <returns>True si toutes les parties du fichiers sont rassemblées </returns>
        public Demande RecupereReponse(Demande demande, string fichierReponse)
        {
            string[] partsExistantes;
            string   fichierDestination;
            Demande  retour = null;

            var           infos = Path.GetFileName(fichierReponse).Split('.');
            List <long>   curseurs;
            List <string> parts;

            if (infos[2] == "0")
            {
                fichierDestination = Dossier + "\\" + demande.Md5f.Chemin;
                Directory.CreateDirectory(Path.GetDirectoryName(fichierDestination));
                File.Copy(fichierReponse, fichierDestination, true);
            }
            else if (infos[2] == "1")
            {
                partsExistantes = Directory.GetFiles(_dossier + "\\" + C.DOSSIER_TRAVAIL, demande.Md5f.Md5 + ".*", SearchOption.TopDirectoryOnly);
                if (partsExistantes.Length > 0)
                {
                    curseurs = new List <long>();
                    parts    = new List <string>();

                    foreach (string part in partsExistantes)
                    {
                        curseurs.Add(long.Parse(Path.GetFileName(part).Split('.')[1]));
                    }
                    curseurs.Sort();
                    curseurs.Add(1);

                    fichierDestination = Dossier + "\\" + C.DOSSIER_TRAVAIL + "\\" + demande.Md5f.Md5 + "." + infos[2];
                    Directory.CreateDirectory(Path.GetDirectoryName(fichierDestination));
                    File.Copy(fichierReponse, fichierDestination, true);

                    foreach (long curseur in curseurs)
                    {
                        parts.Add(_dossier + "\\" + C.DOSSIER_TRAVAIL + "\\" + demande.Md5f.Md5 + "." + curseur);
                    }

                    fichierDestination = Dossier + "\\" + demande.Md5f.Chemin;

                    U.AssembleFileParts(parts.ToArray(), fichierDestination);

                    foreach (string part in parts)
                    {
                        File.Delete(part);
                    }
                }
            }
            else
            {
                fichierDestination = Dossier + "\\" + C.DOSSIER_TRAVAIL + "\\" + demande.Md5f.Md5 + "." + infos[2];
                Directory.CreateDirectory(Path.GetDirectoryName(fichierDestination));
                File.Copy(fichierReponse, fichierDestination, true);

                retour = new Demande(demande.Md5f, _confLocale.Client, long.Parse(infos[2]));
            }

            SupprimeDemande(demande);

            if (Directory.GetFiles(_dossierTamponSynchro, demande.Md5f.Md5 + "." + demande.PartStart + ".*." + C.EXT__DEMANDE).Length == 0)
            {
                File.Delete(fichierReponse);
            }

            return(retour);
        }
コード例 #5
0
        public bool FichierDemandeExiste(Demande demande)
        {
            var nomFichier = _dossier + "\\" + demande.Md5f.Chemin;

            return(File.Exists(nomFichier));
        }
コード例 #6
0
ファイル: Synchro.cs プロジェクト: adrien-vh/backup-airways
 public void SupprimeDemande(Demande demande)
 {
     File.Delete(_dossierTamponSynchro + "\\" + demande.FichierDemande);
 }
コード例 #7
0
ファイル: Synchro.cs プロジェクト: adrien-vh/backup-airways
        /*public string ReponseExiste (Demande demande) {
         *      return File.Exists(demande.FichierReponseExistant(_dossierTamponSynchro)) ? demande.FichierReponseExistant(_dossierTamponSynchro) : null;
         * }*/

        public bool FichierDeDemandeExiste(Demande demande)
        {
            return(File.Exists(_dossierTamponSynchro + "\\" + demande.FichierDemande));
        }