miniserver.h

00001 /************************************************************************
00002  * 
00003  * Copyright (c) 2000-2003 Intel Corporation 
00004  * All rights reserved. 
00005  *
00006  * Redistribution and use in source and binary forms, with or without 
00007  * modification, are permitted provided that the following conditions are met: 
00008  *
00009  * * Redistributions of source code must retain the above copyright notice, 
00010  * this list of conditions and the following disclaimer. 
00011  * * Redistributions in binary form must reproduce the above copyright notice, 
00012  * this list of conditions and the following disclaimer in the documentation 
00013  * and/or other materials provided with the distribution. 
00014  * Neither name of Intel Corporation nor the names of its contributors 
00015  * may be used to endorse or promote products derived from this software 
00016  * without specific prior written permission.
00017  * 
00018  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
00019  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
00020  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
00021  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR 
00022  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
00023  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
00024  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
00025  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
00026  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00027  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
00028  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00029  *
00030  ************************************************************************/
00031 
00032 #ifndef MINISERVER_H
00033 #define MINISERVER_H
00034 
00035 
00036 #include "sock.h"
00037 #include "httpparser.h"
00038 
00039 
00040 extern SOCKET gMiniServerStopSock;
00041 
00042 
00043 typedef struct MServerSockArray {
00044         /* socket for listening for miniserver requests */
00045         SOCKET miniServerSock4;
00046         SOCKET miniServerSock6;
00047         /* socket for stopping miniserver */
00048         SOCKET miniServerStopSock;
00049         /* socket for incoming advertisments and search requests */
00050         SOCKET ssdpSock4;
00051         SOCKET ssdpSock6;
00052 
00053         SOCKET stopPort;
00054         SOCKET miniServerPort4;
00055         SOCKET miniServerPort6;
00056 
00057         /* socket for sending search requests and receiving search replies */
00058         CLIENTONLY(SOCKET ssdpReqSock4;)
00059         CLIENTONLY(SOCKET ssdpReqSock6;)
00060 } MiniServerSockArray;
00061 
00062 
00063 typedef void (*MiniServerCallback)(
00064         IN http_parser_t *parser,
00065         IN http_message_t* request, 
00066         IN SOCKINFO *info );
00067 
00068 
00069 #ifdef __cplusplus
00070 extern "C" {
00071 #endif
00072 
00073 
00077 void SetHTTPGetCallback(
00079         MiniServerCallback callback);
00080 
00081 
00085 #ifdef INCLUDE_DEVICE_APIS
00086 void SetSoapCallback(
00088         MiniServerCallback callback);
00089 #else  /* INCLUDE_DEVICE_APIS */
00090 static inline void SetSoapCallback(MiniServerCallback callback) {}
00091 #endif /* INCLUDE_DEVICE_APIS */
00092 
00093 
00097 void SetGenaCallback(
00099         MiniServerCallback callback);
00100 
00101 
00117 int StartMiniServer(
00119         unsigned short *listen_port4, 
00121         unsigned short *listen_port6);
00122 
00123 
00129 int StopMiniServer();
00130 
00131 
00132 #ifdef __cplusplus
00133 }   /* extern C */
00134 #endif
00135 
00136 
00137 #endif /* MINISERVER_H */
00138