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 / miniserver.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 MINISERVER_H
33 #define MINISERVER_H
34
35
36 #include "sock.h"
37 #include "httpparser.h"
38
39
40 extern SOCKET gMiniServerStopSock;
41
42
43 typedef struct MServerSockArray {
44         /* socket for listening for miniserver requests */
45         int miniServerSock;
46         /* socket for stopping miniserver */
47         int miniServerStopSock;
48         /* socket for incoming advertisments and search requests */
49         int ssdpSock;
50
51         int stopPort;
52         int miniServerPort;
53
54         /* socket for sending search requests and receiving search replies */
55         CLIENTONLY(int ssdpReqSock;)
56 } MiniServerSockArray;
57
58
59 typedef void (*MiniServerCallback)(
60         IN http_parser_t *parser,
61         IN http_message_t* request, 
62         IN SOCKINFO *info );
63
64
65 #ifdef __cplusplus
66 extern "C" {
67 #endif
68
69 /************************************************************************
70  * Function: SetHTTPGetCallback
71  *
72  * Parameters:
73  *      MiniServerCallback callback; - HTTP Callback to be invoked 
74  *
75  * Description: Set HTTP Get Callback
76  *
77  * Return: void
78  ************************************************************************/
79 void SetHTTPGetCallback( MiniServerCallback callback );
80
81 /************************************************************************
82  * Function: SetSoapCallback
83  *
84  * Parameters:
85  *      MiniServerCallback callback; - SOAP Callback to be invoked 
86  *
87  * Description: Set SOAP Callback
88  *
89  * Return: void
90  ************************************************************************/
91 #ifdef INCLUDE_DEVICE_APIS
92 void SetSoapCallback( MiniServerCallback callback );
93 #else  /* INCLUDE_DEVICE_APIS */
94 static inline void SetSoapCallback( MiniServerCallback callback ) {}
95 #endif /* INCLUDE_DEVICE_APIS */
96
97 /************************************************************************
98  * Function: SetGenaCallback
99  *
100  * Parameters:
101  *      MiniServerCallback callback; - GENA Callback to be invoked
102  *
103  * D6escription: Set GENA Callback
104  *
105  * Return: void
106  ************************************************************************/
107 void SetGenaCallback( MiniServerCallback callback );
108
109 /************************************************************************
110  * Function: StartMiniServer
111  *
112  * Parameters:
113  *      unsigned short listen_port ; Port on which the server listens for 
114  *      incoming connections
115  *
116  * Description: Initialize the sockets functionality for the 
117  *      Miniserver. Initialize a thread pool job to run the MiniServer
118  *      and the job to the thread pool. If listen port is 0, port is 
119  *      dynamically picked
120  *
121  *      Use timer mechanism to start the MiniServer, failure to meet the 
122  *      allowed delay aborts the attempt to launch the MiniServer.
123  *
124  * Return: int;
125  *      Actual port socket is bound to - On Success: 
126  *      A negative number UPNP_E_XXX - On Error                         
127  ************************************************************************/
128 int StartMiniServer( unsigned short listen_port );
129
130 /************************************************************************
131  * Function: StopMiniServer
132  *
133  * Parameters:
134  *      void;   
135  *
136  * Description: Stop and Shutdown the MiniServer and free socket resources.
137  *
138  * Return : int;
139  *      Always returns 0 
140  ************************************************************************/
141 int StopMiniServer();
142
143
144 #ifdef __cplusplus
145 }   /* extern C */
146 #endif
147
148
149 #endif /* MINISERVER_H */
150