4 // Fraunhofer Institute for Open Communication Systems (FOKUS)
6 // The contents of this file are subject to the Fraunhofer FOKUS Public License
7 // Version 1.0 (the "License"); you may not use this file except in compliance
8 // with the License. You may obtain a copy of the License at
9 // http://senf.berlios.de/license.html
11 // The Fraunhofer FOKUS Public License Version 1.0 is based on,
12 // but modifies the Mozilla Public License Version 1.1.
13 // See the full license text for the amendments.
15 // Software distributed under the License is distributed on an "AS IS" basis,
16 // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
17 // for the specific language governing rights and limitations under the License.
19 // The Original Code is Fraunhofer FOKUS code.
21 // The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V.
22 // (registered association), Hansastraße 27 c, 80686 Munich, Germany.
23 // All Rights Reserved.
26 // Stefan Bund <g0dil@berlios.de>
29 \brief BSDAddressingPolicyMixin inline template implementation
32 //#include "BSDAddressingPolicy.ih"
36 #define prefix_ inline
37 //-/////////////////////////////////////////////////////////////////////////////////////////////////
39 //-/////////////////////////////////////////////////////////////////////////////////////////////////
40 // senf::BSDAddressingPolicyMixin<Address>
43 template <class Address>
44 template <class SPolicy>
45 prefix_ void senf::BSDAddressingPolicyMixin<Address>::
46 peer(SocketHandle<SPolicy> const & handle, Address & addr,
47 typename IfCommunicationPolicyIs<SPolicy,ConnectedCommunicationPolicy>::type *)
50 do_peer(handle,addr.sockaddr_p(),addr.socklen_p());
51 } catch (Exception & e) {
52 e << "; could not get peer for address \"" << addr << "\"";
57 template <class Address>
58 template <class SPolicy>
59 prefix_ void senf::BSDAddressingPolicyMixin<Address>::
60 peer(SocketHandle<SPolicy> const & handle, Address & addr)
65 template <class Address>
66 template <class SPolicy>
67 prefix_ void senf::BSDAddressingPolicyMixin<Address>::
68 connect(SocketHandle<SPolicy> const & handle, Address const & addr,
69 typename IfCommunicationPolicyIs<SPolicy,ConnectedCommunicationPolicy>::type *)
72 do_connect(handle,addr.sockaddr_p(),addr.socklen());
73 } catch (Exception & e) {
74 e << "; could not connect to address \"" << addr << "\"";
79 template <class Address>
80 template <class SPolicy>
81 prefix_ void senf::BSDAddressingPolicyMixin<Address>::
82 connect(SocketHandle<SPolicy> const & handle, Address const & addr)
86 template <class Address>
87 prefix_ void senf::BSDAddressingPolicyMixin<Address>::local(FileHandle const & handle,
91 do_local(handle,addr.sockaddr_p(),addr.socklen_p());
92 } catch (Exception & e) {
93 // TODO: identify socket by some meaningful attribute
94 e << "; could not get name for address \"" << addr << "\"";
99 template <class Address>
100 prefix_ void senf::BSDAddressingPolicyMixin<Address>::bind(FileHandle const & handle,
101 Address const & addr)
104 do_bind(handle,addr.sockaddr_p(),addr.socklen());
105 } catch (Exception & e) {
106 e << "; could not bind to address \"" << addr << "\"";
111 //-/////////////////////////////////////////////////////////////////////////////////////////////////
118 // c-file-style: "senf"
119 // indent-tabs-mode: nil
120 // ispell-local-dictionary: "american"
121 // compile-command: "scons -u ../test"
122 // comment-column: 40