-class wxInputFTPStream : public wxSocketInputStream
-{
-public:
-    wxInputFTPStream(wxFTP *ftp, wxSocketBase *sock)
-        : wxSocketInputStream(*sock)
-    {
-        m_ftp = ftp;
-        // socket timeout automatically set in GetPort function
-    }
-
-    virtual ~wxInputFTPStream()
-    {
-        delete m_i_socket;   // keep at top
-
-        // when checking the result, the stream will
-        // almost always show an error, even if the file was
-        // properly transfered, thus, lets just grab the result
-
-        // we are looking for "226 transfer completed"
-        char code = m_ftp->GetResult();
-        if ('2' == code)
-        {
-            // it was a good transfer.
-            // we're done!
-             m_ftp->m_streaming = false;
-            return;
-        }
-        // did we timeout?
-        if (0 == code)
-        {
-            // the connection is probably toast. issue an abort, and
-            // then a close. there won't be any more waiting
-            // for this connection
-            m_ftp->Abort();
-            m_ftp->Close();
-            return;
-        }
-        // There was a problem with the transfer and the server
-        // has acknowledged it.  If we issue an "ABORT" now, the user
-        // would get the "226" for the abort and think the xfer was
-        // complete, thus, don't do anything here, just return
-    }
-
-    wxFTP *m_ftp;
-
-    DECLARE_NO_COPY_CLASS(wxInputFTPStream)
-};
-
-class wxOutputFTPStream : public wxSocketOutputStream
-{
-public:
-    wxOutputFTPStream(wxFTP *ftp_clt, wxSocketBase *sock)
-        : wxSocketOutputStream(*sock), m_ftp(ftp_clt)
-    {
-    }
-
-    virtual ~wxOutputFTPStream(void)
-    {
-        if ( IsOk() )
-        {
-            // close data connection first, this will generate "transfer
-            // completed" reply
-            delete m_o_socket;
-
-            // read this reply
-            m_ftp->GetResult(); // save result so user can get to it
-
-            m_ftp->m_streaming = false;
-        }
-        else
-        {
-            // abort data connection first
-            m_ftp->Abort();
-
-            // and close it after
-            delete m_o_socket;
-        }
-    }
-
-    wxFTP *m_ftp;
-
-    DECLARE_NO_COPY_CLASS(wxOutputFTPStream)
-};
-
-void wxFTP::SetDefaultTimeout(wxUint32 Value)
-{
-    m_uiDefaultTimeout = Value;
-    SetTimeout(Value); // sets it for this socket
-}
-
-