private void Accept(bool forceOverwrite) { this.Status = FileStatus.Working; this.StatusText = "Connecting"; switch (this.DccMethod) { case DccMethod.Send: _dcc = new DccSendReceiver(_fileInfo) { ForceOverwrite = forceOverwrite }; break; case DccMethod.Xmit: _dcc = new DccXmitReceiver(_fileInfo) { ForceOverwrite = forceOverwrite, ForceResume = chkForceResume.IsChecked == true }; break; } _dcc.Connect(_address, _port); _dcc.Connected += dcc_Connected; _dcc.Disconnected += dcc_Disconnected; _dcc.Error += dcc_Error; }
public void StartSend(FileInfo file, Action <int> readyCallback) { _fileInfo = file; this.Header = string.Format("[SEND] {0}", this.Target.Name); this.Title = string.Format("{0} - [DCC {1}] Sending file {2}", App.Product, this.Target.Name, _fileInfo.Name); this.Description = string.Format("Sending {0}...", file.Name); this.FileSize = file.Length; this.Status = FileStatus.Working; switch (this.DccMethod) { case DccMethod.Send: _dcc = new DccSendSender(_fileInfo); break; case DccMethod.Xmit: _dcc = new DccXmitSender(_fileInfo); break; } _dcc.Connected += dcc_Connected; _dcc.Disconnected += dcc_Disconnected; _dcc.Error += dcc_Error; try { _port = _dcc.Listen(App.Settings.Current.Dcc.LowPort, App.Settings.Current.Dcc.HighPort); } catch (InvalidOperationException) { this.Status = FileStatus.Cancelled; this.StatusText = "Error: No ports available"; _port = 0; } if (App.Settings.Current.Dcc.EnableUpnp && NatHelper.IsAvailable) { this.StatusText = "Forwarding port"; NatHelper.BeginAddForwardingRule(_port, System.Net.Sockets.ProtocolType.Tcp, "Floe DCC", (o) => { this.Dispatcher.BeginInvoke((Action)(() => { this.StatusText = "Listening for connection"; readyCallback(_port); })); }); _isPortForwarding = true; } else { this.StatusText = "Listening for connection"; readyCallback(_port); } }
public void StartSend(FileInfo file, Action<int> readyCallback) { _fileInfo = file; this.Header = string.Format("[SEND] {0}", this.Target.Name); this.Title = string.Format("{0} - [DCC {1}] Sending file {2}", App.Product, this.Target.Name, _fileInfo.Name); this.Description = string.Format("Sending {0}...", file.Name); this.FileSize = file.Length; this.Status = FileStatus.Working; switch (this.DccMethod) { case DccMethod.Send: _dcc = new DccSendSender(_fileInfo); break; case DccMethod.Xmit: _dcc = new DccXmitSender(_fileInfo); break; } _dcc.Connected += dcc_Connected; _dcc.Disconnected += dcc_Disconnected; _dcc.Error += dcc_Error; try { _port = _dcc.Listen(App.Settings.Current.Dcc.LowPort, App.Settings.Current.Dcc.HighPort); } catch (InvalidOperationException) { this.Status = FileStatus.Cancelled; this.StatusText = "Error: No ports available"; _port = 0; } if (App.Settings.Current.Dcc.EnableUpnp && NatHelper.IsAvailable) { this.StatusText = "Forwarding port"; NatHelper.BeginAddForwardingRule(_port, System.Net.Sockets.ProtocolType.Tcp, "Floe DCC", (o) => { this.Dispatcher.BeginInvoke((Action)(() => { this.StatusText = "Listening for connection"; readyCallback(_port); })); }); _isPortForwarding = true; } else { this.StatusText = "Listening for connection"; readyCallback(_port); } }