Deprecated --enable-direct-io option.

Modified DeprecatedOptionHandler so that it can have replacing
OptionHandler.
pull/1/head
Tatsuhiro Tsujikawa 2011-07-16 16:03:28 +09:00
parent b96df117d6
commit dbf4f553ca
4 changed files with 49 additions and 14 deletions

View File

@ -218,11 +218,14 @@ OptionHandlers OptionHandlerFactory::createOptionHandlers()
#endif // ENABLE_ASYNC_DNS #endif // ENABLE_ASYNC_DNS
#ifdef ENABLE_DIRECT_IO #ifdef ENABLE_DIRECT_IO
{ {
SharedHandle<OptionHandler> op(new BooleanOptionHandler // TODO Deprecated
SharedHandle<OptionHandler> op
(new DeprecatedOptionHandler
(SharedHandle<OptionHandler>(new BooleanOptionHandler
(PREF_ENABLE_DIRECT_IO, (PREF_ENABLE_DIRECT_IO,
TEXT_ENABLE_DIRECT_IO, TEXT_ENABLE_DIRECT_IO,
A2_V_TRUE, A2_V_TRUE,
OptionHandler::OPT_ARG)); OptionHandler::OPT_ARG))));
op->addTag(TAG_ADVANCED); op->addTag(TAG_ADVANCED);
op->addTag(TAG_FILE); op->addTag(TAG_FILE);
handlers.push_back(op); handlers.push_back(op);

View File

@ -738,8 +738,8 @@ std::string PrioritizePieceOptionHandler::createPossibleValuesString() const
DeprecatedOptionHandler::DeprecatedOptionHandler DeprecatedOptionHandler::DeprecatedOptionHandler
(const SharedHandle<OptionHandler>& depOptHandler, (const SharedHandle<OptionHandler>& depOptHandler,
const std::string& repOptName) const SharedHandle<OptionHandler>& repOptHandler)
: depOptHandler_(depOptHandler), repOptName_(repOptName) : depOptHandler_(depOptHandler), repOptHandler_(repOptHandler)
{} {}
bool DeprecatedOptionHandler::canHandle(const std::string& optName) bool DeprecatedOptionHandler::canHandle(const std::string& optName)
@ -749,11 +749,15 @@ bool DeprecatedOptionHandler::canHandle(const std::string& optName)
void DeprecatedOptionHandler::parse(Option& option, const std::string& arg) void DeprecatedOptionHandler::parse(Option& option, const std::string& arg)
{ {
A2_LOG_WARN(fmt("--%s option is deprecated. Use --%s option instead.", if(repOptHandler_) {
A2_LOG_WARN(fmt(_("--%s option is deprecated. Use --%s option instead."),
depOptHandler_->getName().c_str(), depOptHandler_->getName().c_str(),
repOptName_.c_str())); repOptHandler_->getName().c_str()));
depOptHandler_->parse(option, arg); repOptHandler_->parse(option, arg);
option.put(repOptName_, option.get(depOptHandler_->getName())); } else {
A2_LOG_WARN(fmt(_("--%s option is deprecated."),
depOptHandler_->getName().c_str()));
}
} }
std::string DeprecatedOptionHandler::createPossibleValuesString() const std::string DeprecatedOptionHandler::createPossibleValuesString() const

View File

@ -294,14 +294,20 @@ public:
virtual std::string createPossibleValuesString() const; virtual std::string createPossibleValuesString() const;
}; };
// This class is used to deprecate option and optionally handle its
// option value using replacing option.
class DeprecatedOptionHandler:public OptionHandler { class DeprecatedOptionHandler:public OptionHandler {
private: private:
SharedHandle<OptionHandler> depOptHandler_; SharedHandle<OptionHandler> depOptHandler_;
std::string repOptName_; SharedHandle<OptionHandler> repOptHandler_;
public: public:
// depOptHandler is deprecated option and repOptHandler is replacing
// new option. If there is no replacing option, omit second
// argument.
DeprecatedOptionHandler DeprecatedOptionHandler
(const SharedHandle<OptionHandler>& depOptHandler, (const SharedHandle<OptionHandler>& depOptHandler,
const std::string& repOptName); const SharedHandle<OptionHandler>& repOptHandler =
SharedHandle<OptionHandler>());
virtual bool canHandle(const std::string& optName); virtual bool canHandle(const std::string& optName);
virtual void parse(Option& option, const std::string& arg); virtual void parse(Option& option, const std::string& arg);
virtual std::string createPossibleValuesString() const; virtual std::string createPossibleValuesString() const;

View File

@ -29,6 +29,7 @@ class OptionHandlerTest:public CppUnit::TestFixture {
CPPUNIT_TEST(testHttpProxyOptionHandler); CPPUNIT_TEST(testHttpProxyOptionHandler);
CPPUNIT_TEST(testHttpProxyUserOptionHandler); CPPUNIT_TEST(testHttpProxyUserOptionHandler);
CPPUNIT_TEST(testHttpProxyPasswdOptionHandler); CPPUNIT_TEST(testHttpProxyPasswdOptionHandler);
CPPUNIT_TEST(testDeprecatedOptionHandler);
CPPUNIT_TEST_SUITE_END(); CPPUNIT_TEST_SUITE_END();
public: public:
@ -50,6 +51,7 @@ public:
void testHttpProxyOptionHandler(); void testHttpProxyOptionHandler();
void testHttpProxyUserOptionHandler(); void testHttpProxyUserOptionHandler();
void testHttpProxyPasswdOptionHandler(); void testHttpProxyPasswdOptionHandler();
void testDeprecatedOptionHandler();
}; };
@ -420,4 +422,24 @@ void OptionHandlerTest::testHttpProxyPasswdOptionHandler()
} }
void OptionHandlerTest::testDeprecatedOptionHandler()
{
{
DeprecatedOptionHandler handler
(SharedHandle<OptionHandler>(new DefaultOptionHandler("dep")));
Option option;
handler.parse(option, "foo");
CPPUNIT_ASSERT(!option.defined("dep"));
}
{
DeprecatedOptionHandler handler
(SharedHandle<OptionHandler>(new DefaultOptionHandler("dep")),
SharedHandle<OptionHandler>(new DefaultOptionHandler("rep")));
Option option;
handler.parse(option, "foo");
CPPUNIT_ASSERT(!option.defined("dep"));
CPPUNIT_ASSERT_EQUAL(std::string("foo"), option.get("rep"));
}
}
} // namespace aria2 } // namespace aria2