00001 00002 // 00003 // Copyright (C) 2006 James M. Lawrence. All rights reserved. 00004 // 00005 // software: esve-1.0.3 00006 // file: esve/kernel/impl/Handler.hxx 00007 // 00008 // Redistribution and use in source and binary forms, with or without 00009 // modification, are permitted provided that the following conditions 00010 // are met: 00011 // 00012 // 1. Redistributions of source code must retain the above copyright 00013 // notice, this list of conditions and the following disclaimer. 00014 // 00015 // 2. The origin of this software must not be misrepresented; you must 00016 // not claim that you wrote the original software. If you use this 00017 // software in a product, an acknowledgment in the product 00018 // documentation would be appreciated but is not required. 00019 // 00020 // 3. Altered source versions must be plainly marked as such, and must 00021 // not be misrepresented as being the original software. 00022 // 00023 // 4. The name of the author may not be used to endorse or promote 00024 // products derived from this software without specific prior written 00025 // permission. 00026 // 00027 // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY, 00028 // AND WITH NO CLAIM AS TO ITS SUITABILITY FOR ANY PURPOSE. IN NO EVENT 00029 // SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM WHATSOEVER MADE IN CONNECTION 00030 // TO THIS SOFTWARE. 00031 // 00033 00034 #ifndef esve_kernel_impl_Handler_hxx 00035 #define esve_kernel_impl_Handler_hxx 00036 00037 #include <esve/kernel/Handler.hxx> 00038 #include <memory> 00039 00040 namespace esve { namespace message { 00041 00042 class Handle_Receiver ; 00043 00044 }} // namespace esve::message 00045 00046 namespace esve { namespace kernel { namespace impl { 00047 00052 00053 class Handler 00054 : virtual public kernel::Handler 00055 { 00056 public: 00057 impl::Handler & handler() ; 00058 00059 ~Handler() = 0 ; 00060 00061 protected: 00062 Handler() ; 00063 00064 // 00065 // After creating a Handle_Receiver which decodes data from a 00066 // Handle_Args instance, call this function to receive data from 00067 // the common decoder node. 00068 // 00069 // You almost certainly want to call this in the constructor. 00070 // 00071 void add_decoder( message::Handle_Receiver & ) ; 00072 00073 private: 00074 Handler( const Handler & ) ; 00075 Handler & operator=( const Handler & ) ; 00076 00077 // Coupled implementation with Handler (mutual linking) 00078 friend class Emitter ; 00079 00080 class Private ; 00081 const std::auto_ptr<Private> m ; 00082 } ; 00083 00084 }}} // namespace esve::kernel::impl 00085 00086 #endif
1.3.4