예제 #1
0
        public FileTransferWindow(IFileTransfer transfer) : base("FileTransferWindow")
        {
            this.transfer = transfer;

            fileNameLabel.Text = transfer.File.Name;
            fileSizeLabel.Text = Common.Utils.FormatBytes(transfer.File.Size);

            peersTreeView.AppendColumn("Node", new CellRendererText(), new TreeCellDataFunc(peersTreeView_NodeFunc));
            peersTreeView.AppendColumn("Download Speed", new CellRendererText(), new TreeCellDataFunc(peersTreeView_DownloadSpeedFunc));
            peersTreeView.AppendColumn("Upload Speed", new CellRendererText(), new TreeCellDataFunc(peersTreeView_UploadSpeedFunc));
            peersTreeView.AppendColumn("Progress", new CellRendererProgress(), new TreeCellDataFunc(peersTreeView_ProgressFunc));
            peersTreeView.AppendColumn("Status", new CellRendererText(), new TreeCellDataFunc(peersTreeView_StatusFunc));

            peerListStore       = new ListStore(typeof(IFileTransferPeer));
            peersTreeView.Model = peerListStore;

            base.Closed += base_Closed;

            if (transfer.Status == FileTransferStatus.Paused)
            {
                pauseButton.Active = true;
            }

            pauseButton.Toggled += pauseButton_Toggled;
        }
        /// <summary>
        /// 上传文件,上传文件的进度只能通过时时获取服务端Read的进度
        /// </summary>
        /// <param name="filepath">文件本地路径</param>
        /// <returns>上传成功后返回的文件名</returns>
        public static string UpLoadFile(string filepath, Action <int> action)
        {
            ChannelFactory <IFileTransfer> mfileChannelFactory = null;
            IFileTransfer fileHandlerService = null;

            try
            {
                FileInfo finfo = new FileInfo(filepath);
                if (finfo.Exists == false)
                {
                    throw new Exception("文件不存在!");
                }

                mfileChannelFactory = new ChannelFactory <IFileTransfer>("fileendpoint");
                fileHandlerService  = mfileChannelFactory.CreateChannel();

                UpFile uf = new UpFile();
                if (AppGlobal.cache.Contains("WCFClientID"))
                {
                    uf.clientId = AppGlobal.cache.GetData("WCFClientID").ToString();
                }
                uf.UpKey      = Guid.NewGuid().ToString();
                uf.FileExt    = finfo.Extension;
                uf.FileName   = finfo.Name;
                uf.FileSize   = finfo.Length;
                uf.FileStream = finfo.OpenRead();

                if (action != null)
                {
                    getUpLoadFileProgress(uf.UpKey, action);//获取上传进度条
                }
                UpFileResult result = fileHandlerService.UpLoadFile(uf);

                //mfileChannelFactory.Close();//关闭会话

                if (result.IsSuccess)
                {
                    return(result.Message);
                }
                else
                {
                    throw new Exception("上传文件失败!");
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message + "\n上传文件失败!");
            }
            finally
            {
                if (fileHandlerService != null)
                {
                    (fileHandlerService as IContextChannel).Close();
                }
                if (mfileChannelFactory != null)
                {
                    mfileChannelFactory.Close();
                }
            }
        }
예제 #3
0
        public FileTransferWindow(IFileTransfer transfer)
            : base("FileTransferWindow")
        {
            this.transfer = transfer;

            fileNameLabel.Text = transfer.File.Name;
            fileSizeLabel.Text = FileFind.Common.FormatBytes(transfer.File.Size);

            peersTreeView.AppendColumn("Node", new CellRendererText(), new TreeCellDataFunc(peersTreeView_NodeFunc));
            peersTreeView.AppendColumn("Download Speed", new CellRendererText(), new TreeCellDataFunc(peersTreeView_DownloadSpeedFunc));
            peersTreeView.AppendColumn("Upload Speed", new CellRendererText(), new TreeCellDataFunc(peersTreeView_UploadSpeedFunc));
            peersTreeView.AppendColumn("Progress", new CellRendererProgress(), new TreeCellDataFunc(peersTreeView_ProgressFunc));
            peersTreeView.AppendColumn("Status", new CellRendererText(), new TreeCellDataFunc(peersTreeView_StatusFunc));

            peerListStore = new ListStore(typeof(IFileTransferPeer));
            peersTreeView.Model = peerListStore;

            base.Closed += base_Closed;

            if (transfer.Status == FileTransferStatus.Paused) {
                pauseButton.Active = true;
            }

            pauseButton.Toggled += pauseButton_Toggled;
        }
        private void MakeProxySubStreaming(string EndpoindAddress, object callbackinstance)
        {
            NetTcpBinding netTcpbinding = new NetTcpBinding();

            netTcpbinding.MaxReceivedMessageSize = int.MaxValue;
            netTcpbinding.MaxBufferSize          = int.MaxValue;
            EndpointAddress endpointAddress = new EndpointAddress(EndpoindAddress);

            netTcpbinding.TransferMode           = TransferMode.Streamed;
            netTcpbinding.MaxBufferSize          = 2147483647;
            netTcpbinding.MaxReceivedMessageSize = 2147483647;
            netTcpbinding.Security.Mode          = SecurityMode.None;

            netTcpbinding.ReaderQuotas.MaxStringContentLength = 2147483647;
            netTcpbinding.ReaderQuotas.MaxBytesPerRead        = 2147483647;
            netTcpbinding.ReaderQuotas.MaxArrayLength         = 2147483647;

            InstanceContext context = new InstanceContext(callbackinstance);

            m_channelFactory = new ChannelFactory <IFileTransfer>(netTcpbinding, endpointAddress);

            _proxySubStreaming = m_channelFactory.CreateChannel();

            keepAlive();
        }
예제 #5
0
 private void OnTransferStateChanged(IFileTransfer ft)
 {
     if (TransferStateChanged != null)
     {
         TransferStateChanged(ft);
     }
 }
예제 #6
0
        public TransfersMenu(TreeView transfersList, IFileTransfer transfer)
        {
            Glade.XML glade = new Glade.XML(null, "FileFind.Meshwork.GtkClient.meshwork.glade", "TransfersMenu", null);
            glade.Autoconnect(this);
            this.menu = (Gtk.Menu) glade.GetWidget("TransfersMenu");

            this.transfersList = transfersList;
            this.transfer = transfer;

            if (transfer != null) {
                mnuCancelAndRemoveTransfer.Visible = true;
                mnuShowTransferDetails.Sensitive = true;
                mnuClearFinishedFailedTransfers.Sensitive = true;
                if (transfer.Status == FileTransferStatus.Paused) {
                    mnuPauseTransfer.Visible = false;
                    mnuResumeTransfer.Visible = true;
                    mnuResumeTransfer.Sensitive = true;
                    mnuCancelTransfer.Sensitive = true;
                } else if (transfer.Status == FileTransferStatus.Canceled || transfer.Status == FileTransferStatus.Completed) {
                    mnuPauseTransfer.Sensitive = false;
                    mnuResumeTransfer.Visible = false;
                    mnuCancelTransfer.Sensitive = false;
                }
            } else {
                mnuCancelAndRemoveTransfer.Visible = false;
                mnuShowTransferDetails.Sensitive = false;
                mnuPauseTransfer.Sensitive = false;
                mnuResumeTransfer.Visible = false;
                mnuCancelTransfer.Sensitive = false;
            }
        }
예제 #7
0
            public FileTransferUiProxy(IFileTransfer ft)
            {
                View = new FileTransferViewItem(Path.GetFileName(ft.Name), ft.BytesTotal, ft.Direction);
                Desc = ft;
                switch (ft.Direction)
                {
                case FileTransferDirection.In:
                    // waiting
                    View.Accept  += ViewAccept;
                    View.Decline += ViewDecline;
                    whBound       = true;
                    // receiving
                    View.Cancel += ViewCancel;
                    // received
                    View.Open         += ViewOpen;
                    View.ShowInFolder += ViewShowInFolder;
                    View.Conceal      += ViewConceal;
                    break;

                case FileTransferDirection.Out:
                    View.Cancel  += ViewCancel;
                    View.Conceal += ViewConceal;
                    break;
                }
                lastUpdate = DateTime.Now;
            }
예제 #8
0
        public ReleaseManager(FileTransfer fileTransfer)
        {
            this.fileTransfer = fileTransfer;

            // setting object loads settings from file or displays form
            Settings = new Settings();

            versions = new XmlVersions();

            try
            {
                // create temp folder (if not exists)
                if (!Directory.Exists(localPath))
                    Directory.CreateDirectory(localPath);

                Valid = true;
            }
            catch (Exception e)
            {
                ErrorLog.Add(this, e.Message);

                // fire error event
                FireError(Strings.UnableToCreateLocalDirectory);
            }
        }
예제 #9
0
        private void manager_FileTransferRemoved(object sender, FileTransferEventArgs e)
        {
            try {
                // Remove transfer from list
                Gtk.TreeIter iter;
                transferListStore.GetIterFirst(out iter);
                if (transferListStore.IterIsValid(iter))
                {
                    do
                    {
                        IFileTransfer currentItem = (IFileTransfer)transferListStore.GetValue(iter, 0);
                        if (currentItem == e.Transfer)
                        {
                            transferListStore.Remove(ref iter);
                            return;
                        }
                    }  while (transferListStore.IterNext(ref iter));
                }

                Gui.MainWindow.RefreshCounts();
            } catch (Exception ex) {
                Core.LoggingService.LogError(ex);
                Gui.ShowErrorDialog(ex.ToString(), Gui.MainWindow.Window);
            }
        }
예제 #10
0
        public ReleaseManager(FileTransfer fileTransfer)
        {
            this.fileTransfer = fileTransfer;

            // setting object loads settings from file or displays form
            Settings = new Settings();

            versions = new XmlVersions();

            try
            {
                // create temp folder (if not exists)
                if (!Directory.Exists(localPath))
                {
                    Directory.CreateDirectory(localPath);
                }

                Valid = true;
            }
            catch (Exception e)
            {
                ErrorLog.Add(this, e.Message);

                // fire error event
                FireError(Strings.UnableToCreateLocalDirectory);
            }
        }
예제 #11
0
 private IFileTransfer SetCredentials(ActivityContext context, IFileTransfer transporter)
 {
     if (UserName.Get(context).ContainsCharacters() && Password.Get(context).ContainsCharacters())
     {
         transporter.SetUserNameAndPassword(UserName.Get(context), Password.Get(context));
     }
     return(transporter);
 }
예제 #12
0
 private void LoadServices()
 {
     _sb.Options = ServiceRequestOptions.NotifyVerbosely;
     _fileClient = _sb.FileTransferV2();
     _bulkData   = _sb.BulkDataV2();
     _docClient  = _sb.DocumentV2();
     _ctClient   = _sb.ContentTypeV2();
 }
예제 #13
0
        private void RaiseTransferRemoved(IFileTransfer transfer)
        {
            LoggingService.LogInfo("Transfer removed: {0}", transfer.File.Name);

            if (FileTransferRemoved != null)
            {
                FileTransferRemoved(transfer);
            }
        }
예제 #14
0
        public Message CreateRequestFileMessage(Node node, IFileTransfer transfer)
        {
            var     remoteFile = (RemoteFile)transfer.File;
            Message p          = new Message(network, MessageType.RequestFile);

            p.To      = node.NodeID;
            p.Content = new RequestFileInfo(remoteFile.RemoteFullPath, transfer.Id);
            return(p);
        }
예제 #15
0
        private void RaiseNewTransfer(IFileTransfer transfer)
        {
            LoggingService.LogInfo("Transfer added: {0}", transfer.File.Name);

            if (NewFileTransfer != null)
            {
                NewFileTransfer(transfer);
            }
        }
예제 #16
0
        public FTestFTP()
        {
            InitializeComponent();

            string ftpUrl      = @"ftp://192.168.0.102/";
            string ftpUserName = string.Empty;
            string ftpPassword = string.Empty;

            this._ftp = new FtpFileTransfer(ftpUrl, ftpUserName, ftpPassword);
        }
예제 #17
0
        public FilesManipulationForm(IFileTransfer fileTransfer)
        {
            InitializeComponent();

            _fileTransfer = fileTransfer;
            _settings     = new Settings();

            SignProgressEvents();
            FormatTransferType();
        }
예제 #18
0
        public static byte[] SerializaObjetoXMLByteArray(IFileTransfer Objeto)
        {
            XmlSerializer x  = new XmlSerializer(Objeto.GetType());
            MemoryStream  St = new MemoryStream();

            x.Serialize(St, Objeto);
            St.Flush();
            byte[] ArrayByte = St.ToArray();
            return(ArrayByte);
        }
예제 #19
0
        /// <summary>
        /// Отправка файла на сервер
        /// </summary>
        /// <param name="settingName">название настройки</param>
        /// <param name="Continue">продолжить с момента разрыва</param>
        public void UploadFileToServer(string settingName)
        {
            Logger logger = LogManager.GetCurrentClassLogger();

            logger.Debug(settingName + ": Начало отправки файла на сервер");
            var baseConfig = GetBaseConfig(settingName);
            ChannelFactory <IFileTransfer> factory;

            SetCurrentStatus(settingName, Job.SendFileToServer, JobStatus.Process);
            OnExchangeProcess(GetCurrentStatus(settingName));

            Status remoteStatus = RemoteGetCurrentStatus(settingName);

            if (remoteStatus.jobStatus == JobStatus.Error && remoteStatus.description.Contains("Не найдена настройка"))
            {
                throw new Exception(remoteStatus.description);
            }

            //закорем поток после передачи
            using (FileData sendData = new FileData()){
                sendData.settingName    = settingName;
                sendData.fileByteStream = GetCompressFileStream(settingName);

                //попробуем загрузить из файла конфигурации
                try{
                    factory = new ChannelFactory <IFileTransfer>("IFileTransfer");
                }
                catch {
                    //если нет то создаем вручную

                    NetTcpBinding streamBinding = new NetTcpBinding(SecurityMode.None);
                    streamBinding.CloseTimeout           = TimeSpan.FromHours(0.5);
                    streamBinding.OpenTimeout            = TimeSpan.FromHours(0.5);
                    streamBinding.SendTimeout            = TimeSpan.FromHours(13);
                    streamBinding.TransferMode           = TransferMode.Buffered;
                    streamBinding.MaxReceivedMessageSize = 429496729;

                    EndpointAddress endpointAdress = new EndpointAddress(config.HostSetting.Protocol + @"://" + baseConfig.ServerAdress + "/FileTransfer");
                    factory = new ChannelFactory <IFileTransfer>(streamBinding, endpointAdress);
                }

                IFileTransfer channel = factory.CreateChannel();
                if (remoteStatus.currentPosInFile > 0)
                {
                    sendData.fileByteStream.Seek(remoteStatus.currentPosInFile, SeekOrigin.Begin);
                }

                channel.UploadFile(sendData);
                factory.Close();
            }

            logger.Debug(settingName + ": Конец отправки файла на сервер");
            SetCurrentStatus(settingName, Job.SendFileToServer, JobStatus.Complite, "", 0);
            OnExchangeProcess(GetCurrentStatus(settingName));
        }
예제 #20
0
        public static IFileTransfer RetornaObjetoFT(string objeto)
        {
            Type          Tipo = typeof(FileTransfer);
            XmlSerializer xml  = new XmlSerializer(Tipo);
            StringReader  SR   = new StringReader(objeto);
            IFileTransfer oFT  = (IFileTransfer)xml.Deserialize(SR);

            SR.Close();
            SR.Dispose();
            return(oFT);
        }
예제 #21
0
        public void RemoveTransfer(IFileTransfer transfer)
        {
            if (!transfers.Contains(transfer)) {
                throw new ArgumentException("Unknown transfer");
            }

            transfer.Cancel();

            transfers.Remove(transfer);

            RaiseTransferRemoved(transfer);
        }
 public void RemoveFileTransfer(IFileTransfer transfer)
 {
     if (transfer is BitTorrentFileTransfer)
     {
         var manager = ((BitTorrentFileTransfer)transfer).Manager;
         if (manager != null)
         {
             this.loggingService.LogDebug("Removing torrent from engine!");
             this.engine.Unregister(manager);
         }
     }
 }
 private void Core_FileTransferRemoved(IFileTransfer transfer)
 {
     if (transfer is BitTorrentFileTransfer)
     {
         var manager = ((BitTorrentFileTransfer)transfer).Manager;
         if (manager != null)
         {
             LoggingService.LogDebug("Removing torrent from engine!");
             engine.Unregister(manager);
         }
     }
 }
예제 #24
0
        public static string SerializaObjetoXML(IFileTransfer Objeto)
        {
            XmlSerializer x  = new XmlSerializer(Objeto.GetType());
            MemoryStream  St = new MemoryStream();

            x.Serialize(St, Objeto);
            St.Flush();
            byte[] ArrayByte = St.ToArray();
            string retorno   = System.Text.Encoding.ASCII.GetString(ArrayByte);

            return(retorno);
        }
예제 #25
0
        public void RemoveTransfer(IFileTransfer transfer)
        {
            if (!transfers.Contains(transfer))
            {
                throw new ArgumentException("Unknown transfer");
            }

            transfer.Cancel();

            transfers.Remove(transfer);

            RaiseTransferRemoved(transfer);
        }
예제 #26
0
        private void TransferIconFunc(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
        {
            IFileTransfer transfer = (IFileTransfer)model.GetValue(iter, 0);

            if (transfer.Direction == FileTransferDirection.Download)
            {
                ((CellRendererPixbuf)cell).Pixbuf = downloadImage;
            }
            else
            {
                ((CellRendererPixbuf)cell).Pixbuf = uploadImage;
            }
        }
예제 #27
0
        private void TransferDownSpeedFunc(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
        {
            IFileTransfer transfer = (IFileTransfer)model.GetValue(iter, 0);

            if (transfer.Status == FileTransferStatus.Transfering)
            {
                ((CellRendererText)cell).Text = FileFind.Common.FormatBytes(transfer.TotalDownloadSpeed) + "/s";
            }
            else
            {
                ((CellRendererText)cell).Text = String.Empty;
            }
        }
예제 #28
0
        /// <summary>
        /// 上传文件,有进度显示
        /// </summary>
        /// <param name="filepath">文件本地路径</param>
        /// <param name="action">进度0-100</param>
        /// <returns>上传成功后返回的文件名</returns>
        public string UpLoadFile(string filepath, Action <int> action)
        {
            IFileTransfer fileHandlerService = null;

            try
            {
                FileInfo finfo = new FileInfo(filepath);
                if (finfo.Exists == false)
                {
                    throw new Exception("文件不存在!");
                }


                fileHandlerService = mfileChannelFactory.CreateChannel();

                UpFile uf = new UpFile();
                uf.clientId   = mConn == null ? "" : mConn.ClientID;
                uf.UpKey      = Guid.NewGuid().ToString();
                uf.FileExt    = finfo.Extension;
                uf.FileName   = finfo.Name;
                uf.FileSize   = finfo.Length;
                uf.FileStream = finfo.OpenRead();

                if (action != null)
                {
                    getupdownprogress(uf.FileStream, uf.FileSize, action);//获取进度条
                }
                UpFileResult result = new UpFileResult();
                result = fileHandlerService.UpLoadFile(uf);

                if (result.IsSuccess)
                {
                    return(result.Message);
                }
                else
                {
                    throw new Exception("上传文件失败!");
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message + "\n上传文件失败!");
            }
            finally
            {
                if (fileHandlerService != null)
                {
                    (fileHandlerService as IContextChannel).Abort();
                }
            }
        }
예제 #29
0
        private void TransferProgressFunc(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
        {
            IFileTransfer transfer = (IFileTransfer)model.GetValue(iter, 0);

            CellRendererProgress progressCell = (CellRendererProgress)cell;

            if (transfer.Progress >= 0)
            {
                progressCell.Value   = Convert.ToInt32(transfer.Progress);
                progressCell.Visible = true;
            }
            else
            {
                progressCell.Value   = 0;
                progressCell.Visible = false;
            }
            progressCell.Text = String.Format("{0}%", progressCell.Value);
        }
        static void setDownFileProgress(string clientId, string downkey, Func <int> func)
        {
            //string _clientId = clientId;
            //string _downkey = downkey;
            //int _progressnum = progressnum;
            new Action <string, string, Func <int> >(delegate(string _clientId, string _downkey, Func <int> _func)
            {
                ChannelFactory <IFileTransfer> mfileChannelFactory = null;
                IFileTransfer fileHandlerService = null;
                try
                {
                    mfileChannelFactory = new ChannelFactory <IFileTransfer>("fileendpoint");
                    fileHandlerService  = mfileChannelFactory.CreateChannel();

                    int _oldprogressnum = 0;
                    int _progressnum    = 0;
                    while ((_progressnum = _func()) != 100)
                    {
                        if (_oldprogressnum < _progressnum)
                        {
                            _oldprogressnum = _progressnum;
                            fileHandlerService.SetDownLoadFileProgress(_clientId, _downkey, _progressnum);
                        }
                        System.Threading.Thread.Sleep(100);
                    }
                    fileHandlerService.SetDownLoadFileProgress(_clientId, _downkey, 100);
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message + "\n设置下载文件进度失败!");
                }
                finally
                {
                    if (fileHandlerService != null)
                    {
                        (fileHandlerService as IContextChannel).Close();
                    }
                    if (mfileChannelFactory != null)
                    {
                        mfileChannelFactory.Close();
                    }
                }
            }).BeginInvoke(clientId, downkey, func, null, null);
        }
예제 #31
0
        private void FileTransferStateChanged(IFileTransfer ft)
        {
            FileTransferUiProxy proxy;

            lock (syncUiProxies)
            {
                if (!uiProxies.TryGetValue(ft, out proxy))
                {
                    Root.Log(LogLevel.Error, "AppController: skipping unknown file transfer session [sid={0}]",
                             ft.Id);
                    return;
                }
            }
            mainDialog.InvokeAsync(() =>
            {
                proxy.View.ErrorMessage = ft.ErrorMessage;
                proxy.View.State        = ft.State;
            });
        }
예제 #32
0
 private void UpdateFileTransferView(IFileTransfer ft)
 {
     lock (syncUiProxies)
     {
         FileTransferUiProxy proxy;
         if (!uiProxies.TryGetValue(ft, out proxy))
         {
             Root.Log(LogLevel.Error, "AppController: skipping unknown file transfer session [sid={0}]",
                      ft.Id);
             return;
         }
         if (proxy.ViewUpdateRequired || ft.BytesDone == ft.BytesTotal)
         {
             mainDialog.InvokeAsync(() =>
             {
                 proxy.UpdateView();
             });
         }
     }
 }
        static void getUpLoadFileProgress(string upkey, Action <int> action)
        {
            new Action <string, Action <int> >(delegate(string _upkey, Action <int> _action)
            {
                ChannelFactory <IFileTransfer> mfileChannelFactory = null;
                IFileTransfer fileHandlerService = null;
                try
                {
                    mfileChannelFactory = new ChannelFactory <IFileTransfer>("fileendpoint");
                    fileHandlerService  = mfileChannelFactory.CreateChannel();

                    int oldnum = 0;
                    int num    = 0;
                    while ((num = fileHandlerService.GetUpLoadFileProgress(_upkey)) != 100)
                    {
                        if (oldnum < num)
                        {
                            oldnum = num;
                            action(num);
                        }
                        System.Threading.Thread.Sleep(100);
                    }
                    action(100);
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message + "\n获取上传文件进度失败!");
                }
                finally
                {
                    if (fileHandlerService != null)
                    {
                        (fileHandlerService as IContextChannel).Close();
                    }
                    if (mfileChannelFactory != null)
                    {
                        mfileChannelFactory.Close();
                    }
                }
            }).BeginInvoke(upkey, action, null, null);
        }
예제 #34
0
        private void TransferStatusFunc(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
        {
            IFileTransfer    transfer = (IFileTransfer)model.GetValue(iter, 0);
            CellRendererText textCell = (CellRendererText)cell;

            if (!String.IsNullOrEmpty(transfer.StatusDetail))
            {
                textCell.Text = String.Format("{0} - {1}", transfer.Status, transfer.StatusDetail);
            }
            else
            {
                textCell.Text = transfer.Status.ToString();
            }

            string color = null;

            switch (transfer.Status)
            {
            //case FileTransferStatus.Failed:
            case FileTransferStatus.Canceled:
                color = "red";
                break;

            case FileTransferStatus.Transfering:
                color = "black";
                break;

            case FileTransferStatus.Completed:
                color = "darkgreen";
                break;

            case FileTransferStatus.AllPeersBusy:
            case FileTransferStatus.Hashing:
            case FileTransferStatus.Paused:
            case FileTransferStatus.Queued:
                color = "gold";
                break;
            }

            textCell.Foreground = color;
        }
예제 #35
0
        private void manager_FileTransferRemoved(IFileTransfer transfer)
        {
            try {
                // Remove transfer from list
                Gtk.TreeIter iter;
                transferListStore.GetIterFirst(out iter);
                if (transferListStore.IterIsValid(iter)) {
                    do {
                        IFileTransfer currentItem = (IFileTransfer)transferListStore.GetValue (iter, 0);
                        if (currentItem == transfer) {
                            transferListStore.Remove (ref iter);
                            return;
                        }
                    }  while (transferListStore.IterNext(ref iter));
                }

                Gui.MainWindow.RefreshCounts();

            } catch (Exception ex) {
                LoggingService.LogError(ex);
                Gui.ShowErrorDialog(ex.ToString(), Gui.MainWindow.Window);
            }
        }
예제 #36
0
 public Message CreateRequestFileMessage(Node node, IFileTransfer transfer)
 {
     var remoteFile = (RemoteFile)transfer.File;
      			Message p = new Message(network, MessageType.RequestFile);
      			p.To = node.NodeID;
     p.Content = new RequestFileInfo(remoteFile.RemoteFullPath, transfer.Id);
      			return p;
 }
예제 #37
0
        private void manager_NewFileTransfer(IFileTransfer transfer)
        {
            try {
                // Add transfer to list
                transferListStore.AppendValues(transfer);

                // Watch a few other events
                transfer.PeerAdded += (FileTransferPeerEventHandler)DispatchService.GuiDispatch(
                    new FileTransferPeerEventHandler(transfer_PeerAdded)
                );

                transfer.Error += (FileTransferErrorEventHandler)DispatchService.GuiDispatch(
                    new FileTransferErrorEventHandler(transfer_Error)
                );

                Gui.MainWindow.RefreshCounts();

            } catch (Exception ex) {
                LoggingService.LogError(ex);
                Gui.ShowErrorDialog(ex.ToString(), Gui.MainWindow.Window);
            }
        }
예제 #38
0
 // FIXME: Nothing calls this!
 private void transfer_Error(IFileTransfer transfer, Exception ex)
 {
     LoggingService.LogError(String.Format("Transfer error ({0})", transfer.File.Name), ex);
 }
예제 #39
0
 private void Skype_FileTransferStatusChanged(IFileTransfer ifiletransfer, TFileTransferStatus status)
 {
     this.Logger.Debug(System.Reflection.MethodBase.GetCurrentMethod().Name);
 }
예제 #40
0
 // FIXME: Nothing calls this!
 private void transfer_PeerAdded(IFileTransfer transfer, IFileTransferPeer peer)
 {
     LoggingService.LogDebug("New Transfer Peer ({0}): {1}", transfer.File.Name, peer.Node);
 }
예제 #41
0
        private void RaiseNewTransfer(IFileTransfer transfer)
        {
            LoggingService.LogInfo("Transfer added: {0}", transfer.File.Name);

            if (NewFileTransfer != null)
                NewFileTransfer(transfer);
        }
예제 #42
0
        private void ClosePod()
        {
            try
            {
                if (VMuktiAPI.VMuktiInfo.CurrentPeer.CurrPeerType == VMuktiAPI.PeerType.NodeWithNetP2P || VMuktiAPI.VMuktiInfo.CurrentPeer.CurrPeerType == VMuktiAPI.PeerType.SuperNode || VMuktiAPI.VMuktiInfo.CurrentPeer.CurrPeerType == VMuktiAPI.PeerType.BootStrap)
                {
                    if (NetP2PChannel != null)
                    {
                        NetP2PChannel.svcUnJoin(VMuktiAPI.VMuktiInfo.CurrentPeer.DisplayName);
                        
                    }
                }
                else
                {
                    if (HttpChannel != null)
                    {
                        HttpChannel.svcHttpUnJoin(VMuktiAPI.VMuktiInfo.CurrentPeer.DisplayName);
                    }
                }

                if (NetP2PChannel != null)
                {
                    
                    NetP2PChannel = null;
                }

                if (HttpChannel != null)
                {
                    HttpChannel = null;
                }
            }
            catch (Exception ex)
            {
                VMuktiAPI.VMuktiHelper.ExceptionHandler(ex, "ClosePod", "FileSearch.xaml.cs");
            }
        }
 public FileTransferResponse(IFileTransfer fileTransfer, string fileName)
     : this(fileTransfer, fileName, null)
 {
 }
 public FileTransferResponse(IFileTransfer fileTransfer, string fileName, string type)
 {
     this.fileTransfer = fileTransfer;
     this.fileName = fileName;
     this.type = type;
 }
예제 #45
0
        private void RaiseTransferRemoved(IFileTransfer transfer)
        {
            LoggingService.LogInfo("Transfer removed: {0}", transfer.File.Name);

            if (FileTransferRemoved != null)
                FileTransferRemoved(transfer);
        }
예제 #46
0
        private byte[] GetFile(IFileTransfer host, string fileName)
        {
            RemoteFileInfo fileInfo = new RemoteFileInfo();

            byte[] file = new byte[0];

            try
            {
                DownloadRequest requestData = new DownloadRequest();

                requestData.FileName = fileName;

                fileInfo = host.DownloadFile(requestData);

                using (MemoryStream stream = new MemoryStream())
                {
                    fileInfo.FileByteStream.CopyTo(stream);
                    file = stream.ToArray();
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show("Error : " + ex.Message);
            }
            finally
            {
                fileInfo.FileByteStream.Close();
            }

            return file;
        }
예제 #47
0
 internal FileTransferOperation(ITransport transport, IFileTransfer transfer, IFileTransferPeer peer)
 {
     this.transport = transport;
     this.transfer = transfer;
     this.peer = peer;
 }
예제 #48
0
        // **** There is no TFileTransferStatus to text conversion supplied. ****
        public void OurFileTransferStatusChanged(IFileTransfer ifiletransfer, TFileTransferStatus status)
        {
            // Always use try/catch with ANY Skype calls.
            try
            {
                // Write File Transfer Status Changed to Window.
                AddTextToTextBox1(DateTime.Now.ToLocalTime() + ": " +
                 "File Transfer Status Changed - File Transfer Filename: " + ifiletransfer.Filename +
                 " - TFileTransferStatus Status: " + status +
                 "\r\n");
            }
            catch (Exception e)
            {
                // Possibly old Skype4COM version, log an error, drop into debug if wanted.
                AddTextToTextBox1(DateTime.Now.ToLocalTime() + ": " +
                 "File Transfer Status Changed Event Fired - Bad Text" +
                 " - Exception Source: " + e.Source + " - Exception Message: " + e.Message +
                 "\r\n");

                // If the "Use Auto Debug" check box is checked and we are in debug, drop into debug here when retry, otherwise, prompt for action.
                Debug.Assert(!this.UseAutoDebug.Checked);
            }
        }
예제 #49
0
        private void FncHostFileSearchService(object lstParams)
        {
            try
            {
                List<object> lstTempObj = (List<object>)lstParams;
                strUri = lstTempObj[1].ToString();

                if ((VMuktiAPI.PeerType)lstTempObj[0] == VMuktiAPI.PeerType.NodeWithNetP2P || (VMuktiAPI.PeerType)lstTempObj[0] == VMuktiAPI.PeerType.BootStrap || (VMuktiAPI.PeerType)lstTempObj[0] == VMuktiAPI.PeerType.SuperNode)
                {
                    NetPeerClient npcFileSearch = new NetPeerClient();
                    ((clsNetTcpFileSearch)objNetTcpFileSearch).EntsvcJoin+=new clsNetTcpFileSearch.delsvcJoin(FileSearch_EntsvcJoin);
                    ((clsNetTcpFileSearch)objNetTcpFileSearch).EntsvcRequestFile+=new clsNetTcpFileSearch.delsvcRequestFile(FileSearch_EntsvcRequestFile);
                    ((clsNetTcpFileSearch)objNetTcpFileSearch).EntsvcSearchQuery+=new clsNetTcpFileSearch.delsvcSearchQuery(FileSearch_EntsvcSearchQuery);
                    ((clsNetTcpFileSearch)objNetTcpFileSearch).EntsvcSearchResult+=new clsNetTcpFileSearch.delsvcSearchResult(FileSearch_EntsvcSearchResult);
                    ((clsNetTcpFileSearch)objNetTcpFileSearch).EntsvcSendFileBlock+=new clsNetTcpFileSearch.delsvcSendFileBlock(FileSearch_EntsvcSendFileBlock);
                    ((clsNetTcpFileSearch)objNetTcpFileSearch).EntsvcGetUserList += new clsNetTcpFileSearch.delsvcGetUserList(FileSearch_EntsvcGetUserList);
                    ((clsNetTcpFileSearch)objNetTcpFileSearch).EntsvcSetUserList += new clsNetTcpFileSearch.delsvcSetUserList(FileSearch_EntsvcSetUserList);
                    ((clsNetTcpFileSearch)objNetTcpFileSearch).EntsvcUnJoin+=new clsNetTcpFileSearch.delsvcUnJoin(FileSearch_EntsvcUnJoin);
                    NetP2PChannel = (IFileTransferChannel)npcFileSearch.OpenClient<IFileTransferChannel>(strUri, strUri.ToString().Split(':')[2].Split('/')[2], ref objNetTcpFileSearch);
                    //**Opening NetP2p Client for FileSearch.

                    while (Counter < 20)
                    {
                        try
                        {
                            NetP2PChannel.svcJoin(VMuktiAPI.VMuktiInfo.CurrentPeer.DisplayName);
                            Counter = 20;
                            NetP2PChannel.svcGetUserList(VMuktiAPI.VMuktiInfo.CurrentPeer.DisplayName);
                        }
                        catch
                        {
                            Counter++;
                            System.Threading.Thread.Sleep(1000);
                        }
                    }
                }
                else
                {
                    BasicHttpClient BasicFileSearchClient = new BasicHttpClient();
                    HttpChannel = (IHttpFileSearchChannel)BasicFileSearchClient.OpenClient<IHttpFileSearchChannel>(strUri);
                    //**opening Http client for FileSearch module

                    while (tempcounter < 20)
                    {
                        try
                        {
                            HttpChannel.svcHttpJoin(VMuktiAPI.VMuktiInfo.CurrentPeer.DisplayName);
                            tempcounter = 20;
                        }
                        catch
                        {
                            tempcounter++;
                            System.Threading.Thread.Sleep(1000);
                        }
                    }
                    dt.Interval = TimeSpan.FromSeconds(5);
                    dt.Tick += new EventHandler(dt_Tick);
                    dt.Start();

                    dtGetFileList.Interval = TimeSpan.FromSeconds(10);
                    dtGetFileList.Tick += new EventHandler(dtGetFileList_Tick);
                    dtGetFileList.Start();
                }
            }
            catch (Exception ex)
            {
                VMuktiAPI.VMuktiHelper.ExceptionHandler(ex, "FncHostFileSearchService", "FileSearch.xaml.cs");
                if (ex.InnerException != null)
                {
                    VMuktiAPI.VMuktiHelper.ExceptionHandler(ex, "FncHostFileSearchService", "FileSearch.xaml.cs");

                }
            }
        }
 private void Core_FileTransferRemoved(IFileTransfer transfer)
 {
     if (transfer is BitTorrentFileTransfer) {
         TorrentManager manager = ((BitTorrentFileTransfer)transfer).Manager;
         if (manager != null) {
             LoggingService.LogDebug("Removing torrent from engine!");
             engine.Unregister(manager);
         }
     }
 }
예제 #51
0
파일: Program.cs 프로젝트: qwv4851/HypeBot
 static void OnFileStatusChanged(IFileTransfer pTransfer, TFileTransferStatus Status)
 {
     string lowerpath = pTransfer.FilePath.ToLower();
     if (Status == TFileTransferStatus.fileTransferStatusCompleted)
     {
         if ((lowerpath.EndsWith(".png") || lowerpath.EndsWith(".jpg") || lowerpath.EndsWith(".gif")))
         {
             Console.WriteLine("Uploading file: " + pTransfer.FilePath);
             string url = UploadImage(pTransfer.FilePath);
             SendMessage(String.Format("{0}: {1}", pTransfer.Filename, url));
         }
         else
         {
             Console.WriteLine("Invalid file extension for file: " + pTransfer.Filename);
         }
         Console.WriteLine("Deleting " + pTransfer.Filename);
         File.Delete(pTransfer.FilePath);
     }
 }