00001 // $Id: FTP_URL.h 91118 2010-07-17 10:29:57Z mcorino $ 00002 00003 /** 00004 * @file FTP_URL.h 00005 * 00006 * @author Martin Corino <mcorino@remedy.nl> 00007 */ 00008 00009 #ifndef ACE_FTP_URL_H 00010 #define ACE_FTP_URL_H 00011 00012 #include /**/ "ace/pre.h" 00013 00014 #include /**/ "ace/config-all.h" 00015 00016 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00017 # pragma once 00018 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00019 00020 #include "ace/INet/INet_Export.h" 00021 #include "ace/INet/URLBase.h" 00022 00023 ACE_BEGIN_VERSIONED_NAMESPACE_DECL 00024 00025 namespace ACE 00026 { 00027 namespace FTP 00028 { 00029 /** 00030 * @class ACE_FTP_URL 00031 * 00032 * @brief 00033 * 00034 */ 00035 class ACE_INET_Export URL 00036 : public ACE::INet::URL_INetAuthBase 00037 { 00038 public: 00039 URL (); 00040 URL (const ACE_CString& url_string); 00041 URL (const URL& url); 00042 virtual ~URL (); 00043 00044 URL& operator =(const URL& url); 00045 00046 virtual const ACE_CString& get_scheme () const; 00047 00048 virtual ACE_CString to_string () const; 00049 00050 virtual u_short default_port () const; 00051 00052 static const char* PROTOCOL; 00053 00054 static const ACE_CString& protocol (); 00055 00056 enum 00057 { 00058 FTP_PORT = 21 00059 }; 00060 00061 protected: 00062 virtual ACE::INet::ClientRequestHandler* create_default_request_handler () const; 00063 00064 private: 00065 class Factory 00066 : public ACE::INet::URL_Base::Factory 00067 { 00068 public: 00069 Factory (); 00070 virtual ~Factory (); 00071 virtual const ACE_CString& protocol (); 00072 virtual ACE::INet::URL_Base* create_from_string (const ACE_CString& url_string); 00073 }; 00074 00075 typedef ACE_Singleton<Factory, 00076 ACE_Null_Mutex> TURLFactorySingleton; 00077 static const Factory& factory_; 00078 }; 00079 } 00080 } 00081 00082 ACE_END_VERSIONED_NAMESPACE_DECL 00083 00084 #if defined (__ACE_INLINE__) 00085 #include "ace/INet/FTP_URL.inl" 00086 #endif 00087 00088 #include /**/ "ace/post.h" 00089 #endif /* ACE_FTP_URL_H */