00001 // $Id: SocketSink.cti 1742 2010-11-04 14:51:56Z g0dil $ 00002 // 00003 // Copyright (C) 2007 00004 // Fraunhofer (FOKUS) 00005 // Competence Center NETwork research (NET), St. Augustin, GERMANY 00006 // Stefan Bund <g0dil@berlios.de> 00007 // 00008 // This program is free software; you can redistribute it and/or modify 00009 // it under the terms of the GNU General Public License as published by 00010 // the Free Software Foundation; either version 2 of the License, or 00011 // (at your option) any later version. 00012 // 00013 // This program is distributed in the hope that it will be useful, 00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 // GNU General Public License for more details. 00017 // 00018 // You should have received a copy of the GNU General Public License 00019 // along with this program; if not, write to the 00020 // Free Software Foundation, Inc., 00021 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00022 00026 //#include "SocketSink.ih" 00027 00028 // Custom includes 00029 00030 #define prefix_ inline 00031 //-///////////////////////////////////////////////////////////////////////////////////////////////// 00032 00033 //-///////////////////////////////////////////////////////////////////////////////////////////////// 00034 // senf::ppi::TargetDgramWriter<HandleType> 00035 00036 template <class HandleType> 00037 prefix_ senf::ppi::TargetDgramWriter<HandleType>::TargetDgramWriter() 00038 {} 00039 00040 template <class HandleType> 00041 prefix_ senf::ppi::TargetDgramWriter<HandleType>:: 00042 TargetDgramWriter(typename Handle::Address const & target) 00043 : target_ (target) 00044 {} 00045 00046 template <class HandleType> 00047 prefix_ typename senf::ppi::TargetDgramWriter<HandleType>::Handle::Address 00048 senf::ppi::TargetDgramWriter<HandleType>::target() 00049 const 00050 { 00051 return target_; 00052 } 00053 00054 template <class HandleType> 00055 prefix_ void 00056 senf::ppi::TargetDgramWriter<HandleType>::target(typename Handle::Address const & target) 00057 { 00058 target_ = target; 00059 } 00060 00061 template <class HandleType> 00062 prefix_ bool senf::ppi::TargetDgramWriter<HandleType>::operator()(Handle & handle, 00063 Packet const & packet) 00064 { 00065 if (target_) 00066 return handle.writeto(target_, packet.data()) != packet.data().begin(); 00067 return false; 00068 } 00069 00070 //-///////////////////////////////////////////////////////////////////////////////////////////////// 00071 // senf::ppi::module::ActiveSocketSink<Writer> 00072 00073 template <class Writer> 00074 prefix_ Writer & senf::ppi::module::ActiveSocketSink<Writer>::writer() 00075 { 00076 return writer_; 00077 } 00078 00079 template <class Writer> 00080 prefix_ typename senf::ppi::module::ActiveSocketSink<Writer>::Handle 00081 senf::ppi::module::ActiveSocketSink<Writer>::handle() 00082 { 00083 return handle_; 00084 } 00085 00086 template <class Writer> 00087 prefix_ void senf::ppi::module::ActiveSocketSink<Writer>::handle(Handle const & handle) 00088 { 00089 handle_ = handle; 00090 event_.set(handle_, IOEvent::Write); 00091 } 00092 00093 //-///////////////////////////////////////////////////////////////////////////////////////////////// 00094 // senf::ppi::module::PassiveSocketSink<Writer> 00095 00096 template <class Writer> 00097 prefix_ Writer & senf::ppi::module::PassiveSocketSink<Writer>::writer() 00098 { 00099 return writer_; 00100 } 00101 00102 template <class Writer> 00103 prefix_ typename Writer::Handle & senf::ppi::module::PassiveSocketSink<Writer>::handle() 00104 { 00105 return handle_; 00106 } 00107 00108 template <class Writer> 00109 prefix_ void senf::ppi::module::PassiveSocketSink<Writer>::handle(Handle const & handle) 00110 { 00111 handle_ = handle; 00112 checkThrottle(); 00113 } 00114 00115 #ifndef DOXYGEN 00116 template <class Writer> 00117 prefix_ void senf::ppi::module::PassiveSocketSink<Writer>::replaceHandle(Handle newHandle) 00118 { 00119 handle(newHandle); 00120 } 00121 #endif 00122 00123 //-///////////////////////////////////////////////////////////////////////////////////////////////// 00124 #undef prefix_ 00125 00126 00127 // Local Variables: 00128 // mode: c++ 00129 // fill-column: 100 00130 // comment-column: 40 00131 // c-file-style: "senf" 00132 // indent-tabs-mode: nil 00133 // ispell-local-dictionary: "american" 00134 // compile-command: "scons -u test" 00135 // End: