pupnp (libupnp) snapshot from SourceForge: git clone git://pupnp.git.sourceforge...
[igd2-for-linux:pandonghui1211s-igd2-for-linux.git] / pupnp_branch-1.6.x / upnp / src / inc / client_table.h
1 ///////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (c) 2000-2003 Intel Corporation 
4 // All rights reserved. 
5 //
6 // Redistribution and use in source and binary forms, with or without 
7 // modification, are permitted provided that the following conditions are met: 
8 //
9 // * Redistributions of source code must retain the above copyright notice, 
10 // this list of conditions and the following disclaimer. 
11 // * Redistributions in binary form must reproduce the above copyright notice, 
12 // this list of conditions and the following disclaimer in the documentation 
13 // and/or other materials provided with the distribution. 
14 // * Neither name of Intel Corporation nor the names of its contributors 
15 // may be used to endorse or promote products derived from this software 
16 // without specific prior written permission.
17 // 
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
21 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR 
22 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
23 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
24 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
25 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
26 // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
28 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 ///////////////////////////////////////////////////////////////////////////
31
32 #ifndef _CLIENT_TABLE
33 #define _CLIENT_TABLE
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
39 #include "upnp.h"
40
41 #include <stdio.h>
42 //#include <malloc.h>
43 #include <stdlib.h>
44 #include <time.h>
45 #include "uri.h"
46 #include "service_table.h"
47
48 #include "TimerThread.h"
49 #include "upnp_timeout.h"
50
51 extern TimerThread gTimerThread;
52
53 CLIENTONLY(
54 typedef struct CLIENT_SUBSCRIPTION {
55   Upnp_SID sid;
56   char * ActualSID;
57   char * EventURL;
58   int RenewEventId;
59   struct CLIENT_SUBSCRIPTION * next;
60 } client_subscription;
61
62 /************************************************************************
63 *       Function :      copy_client_subscription
64 *
65 *       Parameters :
66 *               client_subscription * in ;      - source client subscription
67 *               client_subscription * out ;     - destination client subscription
68 *
69 *       Description :   Make a copy of the client subscription data
70 *
71 *       Return : int ;
72 *               UPNP_E_OUTOF_MEMORY - On Failure to allocate memory
73 *               HTTP_SUCCESS - On Success
74 *
75 *       Note :
76 ************************************************************************/
77 int copy_client_subscription(client_subscription * in, client_subscription * out);
78
79 /************************************************************************
80 *       Function :      free_client_subscription
81 *
82 *       Parameters :
83 *               client_subscription * sub ;     - Client subscription to be freed
84 *
85 *       Description :   Free memory allocated for client subscription data.
86 *               Remove timer thread associated with this subscription event.
87 *
88 *       Return : void ;
89 *
90 *       Note :
91 ************************************************************************/
92 void free_client_subscription(client_subscription * sub);
93
94
95 /************************************************************************
96 *       Function :      freeClientSubList
97 *
98 *       Parameters :
99 *               client_subscription * list ; Client subscription 
100 *
101 *       Description :   Free the client subscription table.
102 *
103 *       Return : void ;
104 *
105 *       Note :
106 ************************************************************************/
107 void freeClientSubList(client_subscription * list);
108
109 /************************************************************************
110 *       Function :      RemoveClientSubClientSID
111 *
112 *       Parameters :
113 *               client_subscription **head ; Head of the subscription list      
114 *               const Upnp_SID sid ;             Subscription ID to be mactched
115 *
116 *       Description :   Remove the client subscription matching the 
117 *               subscritpion id represented by the const Upnp_SID sid parameter 
118 *               from the table and update the table.
119 *
120 *       Return : void ;
121 *
122 *       Note :
123 ************************************************************************/
124 void RemoveClientSubClientSID(client_subscription **head, 
125                                        const Upnp_SID sid);
126
127 /************************************************************************
128 *       Function :      GetClientSubClientSID
129 *
130 *       Parameters :
131 *               client_subscription *head ; Head of the subscription list       
132 *               const Upnp_SID sid ;            Subscription ID to be matched
133 *
134 *       Description :   Return the client subscription from the client table 
135 *               that matches const Upnp_SID sid subscrition id value. 
136 *
137 *       Return : client_subscription * ; The matching subscription
138 *
139 *       Note :
140 ************************************************************************/
141 client_subscription * GetClientSubClientSID(client_subscription *head
142                                                      , const Upnp_SID sid);
143
144 /************************************************************************
145 *       Function :      GetClientSubActualSID
146 *
147 *       Parameters :
148 *               client_subscription *head ;     Head of the subscription list           
149 *               token * sid ;                           Subscription ID to be matched
150 *
151 *       Description :   Returns the client subscription from the client 
152 *               subscription table that has the matching token * sid buffer
153 *               value.
154 *
155 *       Return : client_subscription * ; The matching subscription
156 *
157 *       Note :
158 ************************************************************************/
159 client_subscription * GetClientSubActualSID(client_subscription *head
160                                                      , token * sid);
161 )
162
163 #ifdef __cplusplus
164 }
165 #endif
166
167 #endif /*       _CLIENT_TABLE */