Пример #1
0
        public void Initialize(ArchiveDirectory archiveDirectory)
        {
            Debug.WriteLine(this, "Begin initializing");
            Logger.Debug("Begin initializing");
            ArchiveDirectory      = archiveDirectory;
            MediaDirectoryPRI     = ((CasparServerChannel)_engine.PlayoutChannelPRI)?.Owner.MediaDirectory;
            MediaDirectorySEC     = ((CasparServerChannel)_engine.PlayoutChannelSEC)?.Owner.MediaDirectory;
            AnimationDirectoryPRI = ((CasparServerChannel)_engine.PlayoutChannelPRI)?.Owner.AnimationDirectory;
            AnimationDirectorySEC = ((CasparServerChannel)_engine.PlayoutChannelSEC)?.Owner.AnimationDirectory;
            if (_engine.Preview != null)
            {
                MediaDirectoryPRV     = ((CasparServerChannel)_engine.Preview.Channel)?.Owner.MediaDirectory;
                AnimationDirectoryPRV = ((CasparServerChannel)_engine.Preview.Channel)?.Owner.AnimationDirectory;
            }

            ((WatcherDirectory)MediaDirectoryPRI)?.Initialize();
            ((WatcherDirectory)MediaDirectorySEC)?.Initialize();
            ((WatcherDirectory)MediaDirectoryPRV)?.Initialize();
            ((WatcherDirectory)AnimationDirectoryPRI)?.Initialize();
            ((WatcherDirectory)AnimationDirectorySEC)?.Initialize();
            ((WatcherDirectory)AnimationDirectoryPRV)?.Initialize();

            if (MediaDirectoryPRI is ServerDirectory sdir)
            {
                sdir.MediaPropertyChanged += _serverMediaPropertyChanged;
                sdir.MediaSaved           += _serverDirectoryMediaSaved;
                sdir.MediaVerified        += _mediaPRIVerified;
                sdir.MediaRemoved         += _mediaPRIRemoved;
            }
            sdir = MediaDirectorySEC as ServerDirectory;
            if (MediaDirectoryPRI != MediaDirectorySEC && sdir != null)
            {
                sdir.MediaPropertyChanged += _serverMediaPropertyChanged;
                sdir.MediaSaved           += _serverDirectoryMediaSaved;
            }
            if (AnimationDirectoryPRI is AnimationDirectory adir)
            {
                adir.MediaSaved           += _animationDirectoryMediaSaved;
                adir.PropertyChanged      += _animationDirectoryPropertyChanged;
                adir.MediaAdded           += _animationDirectoryMediaAdded;
                adir.MediaRemoved         += _animationDirectoryMediaRemoved;
                adir.MediaPropertyChanged += _animationDirectoryMediaPropertyChanged;
            }
            adir = AnimationDirectorySEC as AnimationDirectory;
            if (adir != null)
            {
                adir.PropertyChanged += _animationDirectoryPropertyChanged;
            }
            InitialMediaSynchronization();
            Debug.WriteLine(this, "End initializing");
            Logger.Debug("End initializing");
        }
 internal static ArchiveDirectory LoadArchiveDirectory(UInt64 idArchive)
 {
     if (Connect())
         {
             string query = "SELECT Folder FROM archive WHERE idArchive=@idArchive;";
             MySqlCommand cmd = new MySqlCommand(query, connection);
             cmd.Parameters.AddWithValue("@idArchive", idArchive);
             string folder = null;
             lock (connection)
             {
                 folder = (string)cmd.ExecuteScalar();
             }
             if (!string.IsNullOrEmpty(folder))
             {
                 ArchiveDirectory directory = new ArchiveDirectory()
                 {
                     IdArchive = idArchive,
                     Folder = folder,
                 };
                 directory.Initialize();
                 return directory;
             }
         }
     return null;
 }
 private static ArchiveMedia _readArchiveMedia(MySqlDataReader dataReader, ArchiveDirectory dir)
 {
     byte typVideo = dataReader.IsDBNull(dataReader.GetOrdinal("typVideo")) ? (byte)0 : dataReader.GetByte("typVideo");
     ArchiveMedia media = new ArchiveMedia()
         {
             idPersistentMedia = dataReader.GetUInt64("idArchiveMedia"),
             Directory = dir,
         };
     _mediaReadFields(dataReader, media);
     ThreadPool.QueueUserWorkItem(o => media.Verify());
     return media;
 }