private void AttachForwardedPort(ForwardedPort port) { if (port.Session != null && port.Session != Session) { throw new InvalidOperationException("Forwarded port is already added to a different client."); } port.Session = Session; }
/// <summary> /// Adds the forwarded port. /// </summary> /// <param name="port">The port.</param> /// <example> /// <code source="..\..\TCMSSH.Tests\Classes\ForwardedPortRemoteTest.cs" region="Example SshClient AddForwardedPort Start Stop ForwardedPortRemote" language="C#" title="Remote port forwarding" /> /// <code source="..\..\TCMSSH.Tests\Classes\ForwardedPortLocalTest.cs" region="Example SshClient AddForwardedPort Start Stop ForwardedPortLocal" language="C#" title="Local port forwarding" /> /// </example> /// <exception cref="InvalidOperationException">Forwarded port is already added to a different client.</exception> /// <exception cref="ArgumentNullException"><paramref name="port"/> is null.</exception> /// <exception cref="SshConnectionException">Client is not connected.</exception> public void AddForwardedPort(ForwardedPort port) { if (port == null) { throw new ArgumentNullException("port"); } EnsureSessionIsOpen(); AttachForwardedPort(port); _forwardedPorts.Add(port); }
/// <summary> /// Stops and removes the forwarded port from the list. /// </summary> /// <param name="port">Forwarded port.</param> /// <exception cref="ArgumentNullException"><paramref name="port"/> is null.</exception> public void RemoveForwardedPort(ForwardedPort port) { if (port == null) { throw new ArgumentNullException("port"); } // Stop port forwarding before removing it port.Stop(); DetachForwardedPort(port); _forwardedPorts.Remove(port); }
private static void DetachForwardedPort(ForwardedPort port) { port.Session = null; }