source: trash/old-modules/transport/protlib/assocdata.h@ 12764

Last change on this file since 12764 was 5641, checked in by Christoph Mayer, 15 years ago
File size: 3.2 KB
RevLine 
[5641]1/// ----------------------------------------*- mode: C++; -*--
2/// @file assocdata.h
3/// association data for signaling transport connnections
4/// -- AssocData structure to store data of a signaling associaton
5/// -- i.e., a socket-based signaling transport connection
6/// ----------------------------------------------------------
7/// $Id: assocdata.h 2872 2008-02-18 10:58:03Z bless $
8/// $HeadURL: https://svn.ipv6.tm.uka.de/nsis/protlib/trunk/include/assocdata.h $
9// ===========================================================
10//
11// Copyright (C) 2005-2007, all rights reserved by
12// - Institute of Telematics, Universitaet Karlsruhe (TH)
13//
14// More information and contact:
15// https://projekte.tm.uka.de/trac/NSIS
16//
17// This program is free software; you can redistribute it and/or modify
18// it under the terms of the GNU General Public License as published by
19// the Free Software Foundation; version 2 of the License
20//
21// This program is distributed in the hope that it will be useful,
22// but WITHOUT ANY WARRANTY; without even the implied warranty of
23// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24// GNU General Public License for more details.
25//
26// You should have received a copy of the GNU General Public License along
27// with this program; if not, write to the Free Software Foundation, Inc.,
28// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
29//
30// ===========================================================
31#ifndef ASSOC_DATA_H
32#define ASSOC_DATA_H
33
34#include "address.h"
35
36namespace protlib {
37
38/**
39 * @ingroup transport
40 * @{
41 */
42
43typedef int socketfd_t; ///< socket type interface
44typedef unsigned int associd_t; /// SCTP lib interface
45
46/// association data, used to keep all necessary information
47/// (socket, peer address, shutdown, touched) about a single connection
48struct AssocData {
49 AssocData(socketfd_t socketfd,
50 const appladdress& peeraddress,
51 const appladdress& ownaddress):
52 socketfd(socketfd),
53 assoc(0),
54 peer(peeraddress),
55 ownaddr(ownaddress),
56 thread_ID(0),
57 num_of_out_streams(0),
58 shutdown(false),
59 touched(true)
60 {};
61
62 AssocData(associd_t ass, const appladdress& ap, const appladdress& oa, uint32 streams)
63 : socketfd(0),
64 assoc(ass),
65 peer(ap),
66 ownaddr(oa),
67 thread_ID(0),
68 num_of_out_streams(streams),
69 shutdown(false),
70 touched(true)
71 {};
72
73 AssocData(associd_t ass, const char* apstr, protocol_t proto, port_t port, uint32 streams, bool& res)
74 : socketfd(0),
75 assoc(ass),
76 peer(apstr,proto,port,&res),
77 thread_ID(0),
78 num_of_out_streams(streams),
79 shutdown(false),
80 touched(true)
81 {};
82
83
84 const socketfd_t socketfd; ///< socket of signaling transport connection
85 const associd_t assoc; ///< required for SCTP
86
87 const appladdress peer; ///< address of the signaling peer
88 const appladdress ownaddr; ///< own endpoint address of the signaling connection
89
90 pthread_t thread_ID; ///< related receiver thread
91
92 const uint32 num_of_out_streams; ///< required for SCTP
93
94 // shutdown: connection is being shutdown, shutdown
95 // is not complete yet
96 bool shutdown;
97 // this is required for a second changce algorithm when cleaning up unused connections
98 bool touched;
99}; // end AssocData
100
101//@}
102
103} // end namespace protlib
104#endif
Note: See TracBrowser for help on using the repository browser.