提交 3df52fc51e2d09245dc83621bc1c546c34ea241a

作者 LJH 李佳桓
1 个父辈 f3ae194b

add

正在显示 1 个修改的文件 包含 166 行增加0 行删除
  1 +/*
  2 + * Copyright 2007 Stephen Liu
  3 + * For license terms, see the file COPYING along with this library.
  4 + */
  5 +
  6 +#include <string.h>
  7 +#include <stdio.h>
  8 +#include <stdlib.h>
  9 +#include <string.h>
  10 +#include <signal.h>
  11 +#include <assert.h>
  12 +
  13 +#include "spporting.hpp"
  14 +
  15 +#include "sphttp.hpp"
  16 +#include "sphttpmsg.hpp"
  17 +#include "spserver.hpp"
  18 +#include "splfserver.hpp"
  19 +#include "dmpconfig.h"
  20 +#include "dmpserver.h"
  21 +#include "dmpspserverrequest.h"
  22 +#include "dmpspserverresponse.h"
  23 +
  24 +DmpServer *pDmpServer = nullptr;
  25 +class SP_HttpEchoHandler : public SP_HttpHandler
  26 +{
  27 +public:
  28 +
  29 + SP_HttpEchoHandler()
  30 + {
  31 +
  32 +
  33 +
  34 + }
  35 + virtual ~SP_HttpEchoHandler()
  36 + {
  37 + // if( pDmpServer != nullptr)
  38 + // {
  39 + // delete pDmpServer;
  40 + // pDmpServer = nullptr;
  41 + // }
  42 + }
  43 +
  44 + virtual void handle(SP_HttpRequest *request, SP_HttpResponse *response)
  45 + {
  46 + char *szRequest = (char *)(request->getURL());
  47 + if (strcmp("/favicon.ico", szRequest) == 0)
  48 + {
  49 + return;
  50 + }
  51 +
  52 + DmpSpServerRequest dmpRequest(request);
  53 + DmpSpServerResponse dmpResponse(response);
  54 + pDmpServer->HandleRequest(dmpRequest, dmpResponse);
  55 +
  56 + // response->setStatusCode( 200 );
  57 + // response->appendContent( "<html><head>"
  58 + // "<title>Welcome to simple http</title>"
  59 + // "</head><body>" );
  60 +
  61 + // char buffer[ 512 ] = { 0 };
  62 + // snprintf( buffer, sizeof( buffer ),
  63 + // "<p>The requested URI is : %s.</p>", request->getURI() );
  64 + // response->appendContent( buffer );
  65 +
  66 + // snprintf( buffer, sizeof( buffer ),
  67 + // "<p>Client IP is : %s.</p>", request->getClientIP() );
  68 + // response->appendContent( buffer );
  69 +
  70 + // int i = 0;
  71 +
  72 + // for( i = 0; i < request->getParamCount(); i++ ) {
  73 + // snprintf( buffer, sizeof( buffer ),
  74 + // "<p>Param - %s = %s<p>", request->getParamName( i ), request->getParamValue( i ) );
  75 + // response->appendContent( buffer );
  76 + // }
  77 +
  78 + // for( i = 0; i < request->getHeaderCount(); i++ ) {
  79 + // snprintf( buffer, sizeof( buffer ),
  80 + // "<p>Header - %s: %s<p>", request->getHeaderName( i ), request->getHeaderValue( i ) );
  81 + // response->appendContent( buffer );
  82 + // }
  83 +
  84 + // if( NULL != request->getContent() ) {
  85 + // response->appendContent( "<p>" );
  86 + // response->appendContent( request->getContent(), request->getContentLength() );
  87 + // response->appendContent( "</p>" );
  88 + // }
  89 +
  90 + // response->appendContent( "</body></html>\n" );
  91 + }
  92 +};
  93 +
  94 +class SP_HttpEchoHandlerFactory : public SP_HttpHandlerFactory
  95 +{
  96 +public:
  97 + SP_HttpEchoHandlerFactory() {}
  98 + virtual ~SP_HttpEchoHandlerFactory() {}
  99 +
  100 + virtual SP_HttpHandler *create() const
  101 + {
  102 + return new SP_HttpEchoHandler();
  103 + }
  104 +};
  105 +
  106 +
  107 +int main(int argc, char *argv[])
  108 +{
  109 + int port = 8080, maxThreads = 10;
  110 + const char *serverType = "lf";
  111 +#ifndef WIN32
  112 + extern char *optarg;
  113 + int c;
  114 +
  115 + pDmpServer = new DmpServer();
  116 + while ((c = getopt(argc, argv, "p:t:s:v")) != EOF)
  117 + {
  118 + switch (c)
  119 + {
  120 + case 'p':
  121 + port = atoi(optarg);
  122 + break;
  123 + case 't':
  124 + maxThreads = atoi(optarg);
  125 + break;
  126 + case 's':
  127 + serverType = optarg;
  128 + break;
  129 + case '?':
  130 + case 'v':
  131 + printf("Usage: %s [-p <port>] [-t <threads>] [-s <hahs|lf>]\n", argv[0]);
  132 + exit(0);
  133 + }
  134 + }
  135 +#endif
  136 +
  137 + sp_openlog("dmap_spserv", LOG_CONS | LOG_PID | LOG_PERROR, LOG_USER);
  138 +
  139 + assert(0 == sp_initsock());
  140 +
  141 + if (0 == strcasecmp(serverType, "hahs"))
  142 + {
  143 + SP_Server server("", port, new SP_HttpHandlerAdapterFactory(new SP_HttpEchoHandlerFactory()));
  144 +
  145 + server.setTimeout(60);
  146 + server.setMaxThreads(maxThreads);
  147 + server.setReqQueueSize(100, "HTTP/1.1 500 Sorry, server is busy now!\r\n");
  148 +
  149 + server.runForever();
  150 + }
  151 + else
  152 + {
  153 + SP_LFServer server("", port, new SP_HttpHandlerAdapterFactory(new SP_HttpEchoHandlerFactory()));
  154 +
  155 + server.setTimeout(60);
  156 + server.setMaxThreads(maxThreads);
  157 + server.setReqQueueSize(100, "HTTP/1.1 500 Sorry, server is busy now!\r\n");
  158 +
  159 + server.runForever();
  160 + }
  161 + delete pDmpServer;
  162 + sp_closelog();
  163 +
  164 +
  165 + return 0;
  166 +}
注册登录 后发表评论