예제 #1
0
 public XdcamStream(IngestMedia media, bool forWrite)
 {
     if (media == null || media.Directory == null)
         throw new ApplicationException();
     Uri uri = new Uri(media.FullPath);
     _client = new XdcamClient();
     _client.Credentials = media.Directory.NetworkCredential;
     _client.Host = uri.Host;
     _client.UngracefullDisconnection = true;
     try
     {
         _client.Connect();
         _smil_index = 0;
         _media = media;
         _isEditList = media.SmilMetadata != null;
         if (_isEditList)
             _currentStream = _getNextStream();
         else
             _currentStream = forWrite ? _client.OpenWrite(uri.LocalPath) : _client.OpenRead(uri.LocalPath);
     }
     catch
     {
         _client.Dispose();
     }
 }
예제 #2
0
 protected override void GetVolumeInfo()
 {
     if (IsXDCAM && AccessType == TDirectoryAccessType.FTP)
         using (XdcamClient client = new XdcamClient())
         {
             Uri uri = new Uri(_folder, UriKind.Absolute);
             client.Host = uri.Host;
             client.Credentials = NetworkCredential;
             client.Connect();
             VolumeFreeSize = client.GetFreeDiscSpace();
             client.Disconnect();
         }
     else
         base.GetVolumeInfo();
 }
예제 #3
0
 public override void Refresh()
 {
     if (_isRefreshing)
         return;
     _isRefreshing = true;
     try
     {
         if (IsXDCAM)
         {
             if (Monitor.TryEnter(_xdcamLockObject, 1000))
                 try
                 {
                     if (AccessType == TDirectoryAccessType.FTP)
                     {
                         using (XdcamClient client = new XdcamClient())
                         {
                             Uri uri = new Uri(_folder, UriKind.Absolute);
                             client.Host = uri.Host;
                             client.Credentials = NetworkCredential;
                             client.Connect();
                             VolumeFreeSize = client.GetFreeDiscSpace();
                             _readXDCAM(client);
                             client.Disconnect();
                         }
                     }
                     else
                         _readXDCAM(null);
                 }
                 finally
                 {
                     Monitor.Exit(_xdcamLockObject);
                 }
             else
                 throw new ApplicationException("Nie udało się uzyskać dostępu do XDCAM");
         }
         else
             if (AccessType == TDirectoryAccessType.FTP)
                 _ftpDirectoryList();
     }
     finally
     {
         _isRefreshing = false;
     }
 }