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
#ifdef ENABLE_DIRECT_IO
{
SharedHandle<OptionHandler> op(new BooleanOptionHandler
(PREF_ENABLE_DIRECT_IO,
TEXT_ENABLE_DIRECT_IO,
A2_V_TRUE,
OptionHandler::OPT_ARG));
// TODO Deprecated
SharedHandle<OptionHandler> op
(new DeprecatedOptionHandler
(SharedHandle<OptionHandler>(new BooleanOptionHandler
(PREF_ENABLE_DIRECT_IO,
TEXT_ENABLE_DIRECT_IO,
A2_V_TRUE,
OptionHandler::OPT_ARG))));
op->addTag(TAG_ADVANCED);
op->addTag(TAG_FILE);
handlers.push_back(op);

View File

@ -738,8 +738,8 @@ std::string PrioritizePieceOptionHandler::createPossibleValuesString() const
DeprecatedOptionHandler::DeprecatedOptionHandler
(const SharedHandle<OptionHandler>& depOptHandler,
const std::string& repOptName)
: depOptHandler_(depOptHandler), repOptName_(repOptName)
const SharedHandle<OptionHandler>& repOptHandler)
: depOptHandler_(depOptHandler), repOptHandler_(repOptHandler)
{}
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)
{
A2_LOG_WARN(fmt("--%s option is deprecated. Use --%s option instead.",
depOptHandler_->getName().c_str(),
repOptName_.c_str()));
depOptHandler_->parse(option, arg);
option.put(repOptName_, option.get(depOptHandler_->getName()));
if(repOptHandler_) {
A2_LOG_WARN(fmt(_("--%s option is deprecated. Use --%s option instead."),
depOptHandler_->getName().c_str(),
repOptHandler_->getName().c_str()));
repOptHandler_->parse(option, arg);
} else {
A2_LOG_WARN(fmt(_("--%s option is deprecated."),
depOptHandler_->getName().c_str()));
}
}
std::string DeprecatedOptionHandler::createPossibleValuesString() const

View File

@ -294,14 +294,20 @@ public:
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 {
private:
SharedHandle<OptionHandler> depOptHandler_;
std::string repOptName_;
SharedHandle<OptionHandler> repOptHandler_;
public:
// depOptHandler is deprecated option and repOptHandler is replacing
// new option. If there is no replacing option, omit second
// argument.
DeprecatedOptionHandler
(const SharedHandle<OptionHandler>& depOptHandler,
const std::string& repOptName);
const SharedHandle<OptionHandler>& repOptHandler =
SharedHandle<OptionHandler>());
virtual bool canHandle(const std::string& optName);
virtual void parse(Option& option, const std::string& arg);
virtual std::string createPossibleValuesString() const;

View File

@ -29,6 +29,7 @@ class OptionHandlerTest:public CppUnit::TestFixture {
CPPUNIT_TEST(testHttpProxyOptionHandler);
CPPUNIT_TEST(testHttpProxyUserOptionHandler);
CPPUNIT_TEST(testHttpProxyPasswdOptionHandler);
CPPUNIT_TEST(testDeprecatedOptionHandler);
CPPUNIT_TEST_SUITE_END();
public:
@ -50,6 +51,7 @@ public:
void testHttpProxyOptionHandler();
void testHttpProxyUserOptionHandler();
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