switch to new MPL based Fraunhofer FOKUS Public License
[senf.git] / senf / Socket / Protocols / DatagramSocketProtocol.hh
1 // $Id$
2 //
3 // Copyright (C) 2007
4 // Fraunhofer Institute for Open Communication Systems (FOKUS)
5 //
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
10 //
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.
14 //
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.
18 //
19 // The Original Code is Fraunhofer FOKUS code.
20 //
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.
24 //
25 // Contributor(s):
26 //   Stefan Bund <g0dil@berlios.de>
27
28 /** \file
29     \brief DatagramSocketProtocol public header */
30
31 #ifndef HH_SENF_Socket_Protocols_DatagramSocketProtocol_
32 #define HH_SENF_Socket_Protocols_DatagramSocketProtocol_ 1
33
34 // Custom includes
35 #include <sys/time.h>
36 #include <senf/Socket/SocketProtocol.hh>
37 #include <senf/Scheduler/ClockService.hh>
38
39 //#include "DatagramSocketProtocol.mpp"
40 //-/////////////////////////////////////////////////////////////////////////////////////////////////
41
42 namespace senf {
43
44     ///\addtogroup protocol_facets_group
45     //\{
46
47     /** \brief Protocol facet providing generic BSD datagram socket functionality
48       */
49     class DatagramSocketProtocol
50         : public virtual SocketProtocol
51     {
52     public:
53         ClockService::clock_type timestamp_system() const; ///< Return packet timestamp of last packet
54
55         ClockService::clock_type timestamp() const; ///< Return packet timestamp of last packet
56                                         /**< The returned timestamp represents the time, at which
57                                              the last network packet passed to the user has been
58                                              received from the network. This allows precise network
59                                              timing.
60
61                                              \pre The \c SO_TIMESTAMP socket option must not be set
62                                                  on the socket.
63                                              \returns timestamp when last packet was received */
64     };
65
66
67     //\}
68 }
69
70 //-/////////////////////////////////////////////////////////////////////////////////////////////////
71 //#include "DatagramSocketProtocol.cci"
72 //#include "DatagramSocketProtocol.ct"
73 //#include "DatagramSocketProtocol.cti"
74 #endif
75
76 \f
77 // Local Variables:
78 // mode: c++
79 // fill-column: 100
80 // comment-column: 40
81 // c-file-style: "senf"
82 // indent-tabs-mode: nil
83 // ispell-local-dictionary: "american"
84 // compile-command: "scons -u test"
85 // End: