In fact FtpState is now very close to being deprecated, for instance the new versions for Xamarin.iOS and Xamarin.Android will not contain it all.
It often causes confusion for users, because in fact it is related to the FTP protocol rather than actual state of the FTP connection. I.e. FtpState.Ready means that it is possible to send FTP commands but does not say anything about the usability of the FTP connection. It used to have sense in the historical releases of Rebex FTP where 1 method corresponded exactly to 1 FTP command.
Unless needed (which is really rare) we suggest - do not used the State property and use Rebex Ftp like this:
bool ready = false;
Ftp ftp = new Ftp();
try
{
ftp.Connect("server");
ftp.Login("user", "pass");
// here you are connected and authenticated, so
// either continue the work right here
// or indicate that you are ready
ready = true;
}
catch(FtpException ex)
{
Console.WriteLine(ex.ToString());
}
We are working on a better way of determining if you are connected or authenticated and we will post here when it will be released.