aboutsummaryrefslogtreecommitdiffstats
path: root/src/vmime/utility/encoder/encoderFactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/vmime/utility/encoder/encoderFactory.cpp')
-rw-r--r--src/vmime/utility/encoder/encoderFactory.cpp24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/vmime/utility/encoder/encoderFactory.cpp b/src/vmime/utility/encoder/encoderFactory.cpp
index 3e0351f3..cda8168d 100644
--- a/src/vmime/utility/encoder/encoderFactory.cpp
+++ b/src/vmime/utility/encoder/encoderFactory.cpp
@@ -71,7 +71,17 @@ shared_ptr <encoderFactory> encoderFactory::getInstance()
shared_ptr <encoder> encoderFactory::create(const string& name)
{
- return (getEncoderByName(name)->create());
+ try
+ {
+ return (getEncoderByName(name)->create());
+ }
+ catch (exceptions::no_encoder_available &) {
+
+ if (m_defaultEncoder)
+ return m_defaultEncoder;
+
+ throw;
+ }
}
@@ -116,6 +126,18 @@ const std::vector <shared_ptr <const encoderFactory::registeredEncoder> > encode
}
+void encoderFactory::setDefaultEncoder(const shared_ptr <encoder>& enc)
+{
+ m_defaultEncoder = enc;
+}
+
+
+shared_ptr <encoder> encoderFactory::getDefaultEncoder() const
+{
+ return m_defaultEncoder;
+}
+
+
} // encoder
} // utility
} // vmime