Commit 71836bf8 authored by Davis King's avatar Davis King

Converted server tools into regular classes so you don't have to

say ::kernel or anything to instantiate them.  Still need to
move their method implementations into cpp files.
parent 233cd646
......@@ -4,59 +4,9 @@
#define DLIB_SERVEr_
#include "server/server_kernel_1.h"
#include "server/server_kernel_c.h"
#include "server/server_iostream_1.h"
#include "server/server_http_1.h"
#include "set.h"
#include "algs.h"
#include "sockstreambuf.h"
#include "map.h"
#include "queue.h"
#include <string>
namespace dlib
{
class server
{
server() {}
typedef set<connection*>::kernel_1a set_of_cons_1a;
typedef sockstreambuf::kernel_1a ssbuf1a;
typedef sockstreambuf::kernel_2a ssbuf2a;
typedef map<uint64,connection*,memory_manager<char>::kernel_2a>::kernel_1b id_map;
public:
//----------- kernels ---------------
// kernel_1a
typedef server_kernel_1<set_of_cons_1a>
kernel_1a;
typedef server_kernel_c<kernel_1a>
kernel_1a_c;
// iostream_1a
typedef server_iostream_1<kernel_1a,ssbuf2a,id_map>
iostream_1a;
typedef server_iostream_1<kernel_1a_c,ssbuf2a,id_map>
iostream_1a_c;
// http_1a
typedef server_http_1<iostream_1a>
http_1a;
typedef server_http_1<iostream_1a_c>
http_1a_c;
};
}
#endif // DLIB_SERVEr_
......@@ -11,6 +11,7 @@
#include <string>
#include "../logger.h"
#include "../string.h"
#include "server_iostream_1.h"
#ifdef __INTEL_COMPILER
// ignore the bogus warning about hiding on_connect()
......@@ -491,10 +492,7 @@ namespace dlib
// ----------------------------------------------------------------------------------------
template <
typename server_base
>
class server_http_1 : public server_base
class server_http : public server_iostream
{
/*!
......@@ -505,7 +503,7 @@ namespace dlib
public:
server_http_1()
server_http()
{
max_content_length = 10*1024*1024; // 10MB
}
......@@ -570,10 +568,7 @@ namespace dlib
const static logger dlog;
};
template <
typename server_base
>
const logger server_http_1<server_base>::dlog("dlib.server");
const logger server_http::dlog("dlib.server");
}
#endif // DLIB_SERVER_HTTp_1_
......
......@@ -7,27 +7,18 @@
#include "server_iostream_abstract.h"
#include "../logger.h"
#include "../uintn.h"
#include "server_kernel_1.h"
#include "../sockstreambuf.h"
#include "../map.h"
namespace dlib
{
template <
typename server_base,
typename ssbuf,
typename id_map
>
class server_iostream_1 : public server_base
class server_iostream : public server
{
/*!
REQUIREMENTS ON ssbuf
- must be an implementation of dlib/sockstreambuf/sockstreambuf_kernel_abstract.h
REQUIREMENTS ON id_map
- must be an implementation of dlib/map/map_kernel_abstract.h and domain must
be set to uint64 and range must be set to connection*
INITIAL VALUE
- next_id == 0
- con_map.size() == 0
......@@ -39,16 +30,19 @@ namespace dlib
- m == the mutex that protects the members of this object
!*/
typedef sockstreambuf::kernel_2a ssbuf;
typedef map<uint64,connection*,memory_manager<char>::kernel_2a>::kernel_1b id_map;
public:
server_iostream_1(
server_iostream(
) :
next_id(0)
{}
~server_iostream_1(
~server_iostream(
)
{
server_base::clear();
server::clear();
}
protected:
......@@ -149,12 +143,7 @@ namespace dlib
};
template <
typename server_base,
typename ssbuf,
typename id_map
>
const logger server_iostream_1<server_base,ssbuf,id_map>::dlog("dlib.server");
const logger server_iostream::dlog("dlib.server");
}
......
This diff is collapsed.
// Copyright (C) 2003 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#ifndef DLIB_SERVER_KERNEl_C_
#define DLIB_SERVER_KERNEl_C_
#include "server_kernel_abstract.h"
#include "../algs.h"
#include "../assert.h"
#include "../sockets.h"
#include <string>
#include <sstream>
namespace dlib
{
template <
typename server_base
>
class server_kernel_c : public server_base
{
public:
void start (
);
void set_listening_port (
int port
);
void set_listening_ip (
const std::string& ip
);
void set_max_connections (
int max
);
private:
};
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
// member function definitions
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
template <
typename server_base
>
void server_kernel_c<server_base>::
start (
)
{
// make sure requires clause is not broken
DLIB_CASSERT(
this->is_running() == false,
"\tvoid server::start"
<< "\n\tis_running() == " << this->is_running()
<< "\n\tthis: " << this
);
// call the real function
server_base::start();
}
// ----------------------------------------------------------------------------------------
template <
typename server_base
>
void server_kernel_c<server_base>::
set_max_connections (
int max
)
{
// make sure requires clause is not broken
DLIB_CASSERT(
max >= 0 ,
"\tvoid server::set_max_connections"
<< "\n\tmax == " << max
<< "\n\tthis: " << this
);
// call the real function
server_base::set_max_connections(max);
}
// ----------------------------------------------------------------------------------------
template <
typename server_base
>
void server_kernel_c<server_base>::
set_listening_port (
int port
)
{
// make sure requires clause is not broken
DLIB_CASSERT(
( port >= 0 &&
this->is_running() == false ),
"\tvoid server::set_listening_port"
<< "\n\tport == " << port
<< "\n\tis_running() == " << this->is_running()
<< "\n\tthis: " << this
);
// call the real function
server_base::set_listening_port(port);
}
// ----------------------------------------------------------------------------------------
template <
typename server_base
>
void server_kernel_c<server_base>::
set_listening_ip (
const std::string& ip
)
{
// make sure requires clause is not broken
DLIB_CASSERT(
( ( is_ip_address(ip) || ip == "" ) &&
this->is_running() == false ),
"\tvoid server::set_listening_ip"
<< "\n\tip == " << ip
<< "\n\tis_running() == " << this->is_running()
<< "\n\tthis: " << this
);
// call the real function
server_base::set_listening_ip(ip);
}
// ----------------------------------------------------------------------------------------
}
#endif // DLIB_SERVER_KERNEl_C_
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment