basic_context.hpp
Go to the documentation of this file.
00001 //
00002 // basic_context.hpp
00003 // ~~~~~~~~~~~~~~~~~
00004 //
00005 // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
00006 // Copyright (c) 2005-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
00007 //
00008 // Distributed under the Boost Software License, Version 1.0. (See accompanying
00009 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
00010 //
00011 
00012 #ifndef ASIO_SSL_BASIC_CONTEXT_HPP
00013 #define ASIO_SSL_BASIC_CONTEXT_HPP
00014 
00015 #if defined(_MSC_VER) && (_MSC_VER >= 1200)
00016 # pragma once
00017 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
00018 
00019 #include "asio/detail/push_options.hpp"
00020 
00021 #include "asio/detail/push_options.hpp"
00022 #include <string>
00023 #include <boost/noncopyable.hpp>
00024 #include "asio/detail/pop_options.hpp"
00025 
00026 #include "asio/error.hpp"
00027 #include "asio/io_service.hpp"
00028 #include "asio/ssl/context_base.hpp"
00029 #include "asio/detail/throw_error.hpp"
00030 
00031 namespace asio {
00032 namespace ssl {
00033 
00035 template <typename Service>
00036 class basic_context
00037   : public context_base,
00038     private boost::noncopyable
00039 {
00040 public:
00042   typedef Service service_type;
00043 
00045   typedef typename service_type::impl_type impl_type;
00046 
00048   basic_context(asio::io_service& io_service, method m)
00049     : service_(asio::use_service<Service>(io_service)),
00050       impl_(service_.null())
00051   {
00052     service_.create(impl_, m);
00053   }
00054 
00056   ~basic_context()
00057   {
00058     service_.destroy(impl_);
00059   }
00060 
00062 
00067   impl_type impl()
00068   {
00069     return impl_;
00070   }
00071 
00073 
00082   void set_options(options o)
00083   {
00084     asio::error_code ec;
00085     service_.set_options(impl_, o, ec);
00086     asio::detail::throw_error(ec);
00087   }
00088 
00090 
00099   asio::error_code set_options(options o,
00100       asio::error_code& ec)
00101   {
00102     return service_.set_options(impl_, o, ec);
00103   }
00104 
00106 
00115   void set_verify_mode(verify_mode v)
00116   {
00117     asio::error_code ec;
00118     service_.set_verify_mode(impl_, v, ec);
00119     asio::detail::throw_error(ec);
00120   }
00121 
00123 
00132   asio::error_code set_verify_mode(verify_mode v,
00133       asio::error_code& ec)
00134   {
00135     return service_.set_verify_mode(impl_, v, ec);
00136   }
00137 
00139 
00148   void load_verify_file(const std::string& filename)
00149   {
00150     asio::error_code ec;
00151     service_.load_verify_file(impl_, filename, ec);
00152     asio::detail::throw_error(ec);
00153   }
00154 
00156 
00165   asio::error_code load_verify_file(const std::string& filename,
00166       asio::error_code& ec)
00167   {
00168     return service_.load_verify_file(impl_, filename, ec);
00169   }
00170 
00173 
00183   void add_verify_path(const std::string& path)
00184   {
00185     asio::error_code ec;
00186     service_.add_verify_path(impl_, path, ec);
00187     asio::detail::throw_error(ec);
00188   }
00189 
00192 
00202   asio::error_code add_verify_path(const std::string& path,
00203       asio::error_code& ec)
00204   {
00205     return service_.add_verify_path(impl_, path, ec);
00206   }
00207 
00209 
00218   void use_certificate_file(const std::string& filename, file_format format)
00219   {
00220     asio::error_code ec;
00221     service_.use_certificate_file(impl_, filename, format, ec);
00222     asio::detail::throw_error(ec);
00223   }
00224 
00226 
00235   asio::error_code use_certificate_file(const std::string& filename,
00236       file_format format, asio::error_code& ec)
00237   {
00238     return service_.use_certificate_file(impl_, filename, format, ec);
00239   }
00240 
00242 
00251   void use_certificate_chain_file(const std::string& filename)
00252   {
00253     asio::error_code ec;
00254     service_.use_certificate_chain_file(impl_, filename, ec);
00255     asio::detail::throw_error(ec);
00256   }
00257 
00259 
00268   asio::error_code use_certificate_chain_file(
00269       const std::string& filename, asio::error_code& ec)
00270   {
00271     return service_.use_certificate_chain_file(impl_, filename, ec);
00272   }
00273 
00275 
00284   void use_private_key_file(const std::string& filename, file_format format)
00285   {
00286     asio::error_code ec;
00287     service_.use_private_key_file(impl_, filename, format, ec);
00288     asio::detail::throw_error(ec);
00289   }
00290 
00292 
00301   asio::error_code use_private_key_file(const std::string& filename,
00302       file_format format, asio::error_code& ec)
00303   {
00304     return service_.use_private_key_file(impl_, filename, format, ec);
00305   }
00306 
00308 
00318   void use_rsa_private_key_file(const std::string& filename, file_format format)
00319   {
00320     asio::error_code ec;
00321     service_.use_rsa_private_key_file(impl_, filename, format, ec);
00322     asio::detail::throw_error(ec);
00323   }
00324 
00326 
00336   asio::error_code use_rsa_private_key_file(
00337       const std::string& filename, file_format format,
00338       asio::error_code& ec)
00339   {
00340     return service_.use_rsa_private_key_file(impl_, filename, format, ec);
00341   }
00342 
00344 
00353   void use_tmp_dh_file(const std::string& filename)
00354   {
00355     asio::error_code ec;
00356     service_.use_tmp_dh_file(impl_, filename, ec);
00357     asio::detail::throw_error(ec);
00358   }
00359 
00361 
00370   asio::error_code use_tmp_dh_file(const std::string& filename,
00371       asio::error_code& ec)
00372   {
00373     return service_.use_tmp_dh_file(impl_, filename, ec);
00374   }
00375 
00377 
00391   template <typename PasswordCallback>
00392   void set_password_callback(PasswordCallback callback)
00393   {
00394     asio::error_code ec;
00395     service_.set_password_callback(impl_, callback, ec);
00396     asio::detail::throw_error(ec);
00397   }
00398 
00400 
00414   template <typename PasswordCallback>
00415   asio::error_code set_password_callback(PasswordCallback callback,
00416       asio::error_code& ec)
00417   {
00418     return service_.set_password_callback(impl_, callback, ec);
00419   }
00420 
00421 private:
00423   service_type& service_;
00424 
00426   impl_type impl_;
00427 };
00428 
00429 } // namespace ssl
00430 } // namespace asio
00431 
00432 #include "asio/detail/pop_options.hpp"
00433 
00434 #endif // ASIO_SSL_BASIC_CONTEXT_HPP
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


Castor
Author(s): Carpe Noctem
autogenerated on Fri Nov 8 2013 11:05:39