/[resiprocate]/branches/b-directory-reorg/sip/resiprocate/InterruptableStackThread.hxx
ViewVC logotype

Contents of /branches/b-directory-reorg/sip/resiprocate/InterruptableStackThread.hxx

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5271 - (show annotations) (download)
Thu Aug 18 23:43:07 2005 UTC (14 years, 3 months ago) by jason
File size: 3755 byte(s)
new directory reorg proposal
1 #ifndef RESIP_InterruptableStackThread__hxx
2 #define RESIP_InterruptableStackThread__hxx
3
4 #include "resiprocate/os/ThreadIf.hxx"
5 #include "resiprocate/os/Socket.hxx"
6
7 namespace resip
8 {
9
10 class SipStack;
11 class SelectInterruptor;
12
13 /**
14 This class is used to create a thread to run the SipStack in. The
15 thread provides cycles to the SipStack by calling process. Process
16 is called when select returns a signaled file descriptor.
17
18 This implementation improves on StackThread, by providing a fully
19 blocking architecture (ie. no need to wake up every 25ms), since
20 posting to TransactionState will cause the SelectInterruptor to
21 be invoked.
22
23 You must register SelectInterrupter as an AsyncProcessHandler on the
24 SipStack in order to use this class. This is done by providing
25 SelectInterrupter to the constructor of SipStack. This should be
26 the same SelectInterrupter provided when constructing this class.
27 */
28 class InterruptableStackThread : public ThreadIf
29 {
30 public:
31 InterruptableStackThread(SipStack& stack, SelectInterruptor& si);
32 virtual ~InterruptableStackThread();
33
34 virtual void thread();
35
36 protected:
37 virtual void buildFdSet(FdSet& fdset);
38 virtual unsigned int getTimeTillNextProcessMS() const;
39
40 private:
41 SipStack& mStack;
42 SelectInterruptor& mSelectInterruptor;
43 };
44
45 }
46
47 #endif
48
49
50 /* ====================================================================
51 * The Vovida Software License, Version 1.0
52 *
53 * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved.
54 *
55 * Redistribution and use in source and binary forms, with or without
56 * modification, are permitted provided that the following conditions
57 * are met:
58 *
59 * 1. Redistributions of source code must retain the above copyright
60 * notice, this list of conditions and the following disclaimer.
61 *
62 * 2. Redistributions in binary form must reproduce the above copyright
63 * notice, this list of conditions and the following disclaimer in
64 * the documentation and/or other materials provided with the
65 * distribution.
66 *
67 * 3. The names "VOCAL", "Vovida Open Communication Application Library",
68 * and "Vovida Open Communication Application Library (VOCAL)" must
69 * not be used to endorse or promote products derived from this
70 * software without prior written permission. For written
71 * permission, please contact vocal@vovida.org.
72 *
73 * 4. Products derived from this software may not be called "VOCAL", nor
74 * may "VOCAL" appear in their name, without prior written
75 * permission of Vovida Networks, Inc.
76 *
77 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
78 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
79 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
80 * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA
81 * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
82 * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
83 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
84 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
85 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
86 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
87 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
88 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
89 * DAMAGE.
90 *
91 * ====================================================================
92 *
93 * This software consists of voluntary contributions made by Vovida
94 * Networks, Inc. and many individuals on behalf of Vovida Networks,
95 * Inc. For more information on Vovida Networks, Inc., please see
96 * <http://www.vovida.org/>.
97 *
98 */

Properties

Name Value
svn:eol-style LF

webmaster AT resiprocate DOT org
ViewVC Help
Powered by ViewVC 1.1.27