Evo C++ Library v0.5.1
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
MemcachedServer< T > Struct Template Reference

#include <evo/async/memcached_server.h>

Detailed Description

template<class T>
struct evo::async::MemcachedServer< T >

Implements Memcached protocol for an async server.

Usage:

Example

A simple single-threaded memcached server:

#include <evo/maphash.h>
using namespace evo;
// Define a Handler type to handle memcached server events
struct Shared : SimpleSharedBase<> {
StrHash map;
};
Shared& shared;
Handler(Global& global, Shared& shared) : shared(shared) {
}
StoreResult on_store(StoreParams& params, SubString& value, Command command, uint64 cas_id) {
switch(command) {
case cSET:
shared.map[params.key] = value;
break;
default:
send_error("Not supported");
return rtHANDLED;
}
}
ResponseType on_get(const SubString& key, GetAdvParams* adv_params) {
const String* val = shared.map.find(key);
if (val != NULL)
send_value(key, *val);
return rtHANDLED;
}
};
// Create Memcached Server class using Handler
int main() {
const ushort PORT = 11211;
const ulong RD_TIMEOUT_MS = 5000;
const ulong WR_TIMEOUT_MS = 1000;
Socket listener;
try {
listener.listen_ip(PORT);
} EVO_CATCH(return 1)
Server server;
server.set_timeout(RD_TIMEOUT_MS, WR_TIMEOUT_MS);
server.run(listener);
return 0;
}

Public Types

typedef Handler::DeferredContext DeferredContext
 Alias for Handler::DeferredContext. More...
 
typedef Handler::Global Global
 Alias for Handler::Global. More...
 
typedef T Handler
 User defined handler type. More...
 
typedef MemcachedServerHandlerBase HandlerBase
 Alias for MemcachedServerHandlerBase. More...
 
typedef AsyncServer< ThisServer
 Server type. More...
 
typedef Handler::Shared Shared
 Alias for Handler::Shared. More...
 
typedef MemcachedServer< HandlerThis
 This type. More...
 

Public Member Functions

 MemcachedServer (Global &global, Shared &shared, LoggerBase *logger)
 Constructor to create server protocol instance. More...
 
void on_error (AsyncError err)
 
bool on_read (SizeT &fixed_size, AsyncBuffers &buffers, void *context)
 
bool on_read_fixed (SizeT &next_size, SubString &data, void *context)
 

Public Attributes

Handler handler
 Handler instance. More...
 
LoggerPtr logger
 Logger to use. More...
 

Static Public Attributes

static const size_t MIN_INITIAL_READ = 0
 
static const size_t NEWLINE_LEN = 2
 

Member Typedef Documentation

◆ DeferredContext

typedef Handler::DeferredContext DeferredContext

Alias for Handler::DeferredContext.

◆ Global

typedef Handler::Global Global

Alias for Handler::Global.

◆ Handler

typedef T Handler

User defined handler type.

◆ HandlerBase

◆ Server

Server type.

◆ Shared

typedef Handler::Shared Shared

Alias for Handler::Shared.

◆ This

This type.

Constructor & Destructor Documentation

◆ MemcachedServer()

MemcachedServer ( Global global,
Shared shared,
LoggerBase logger 
)
inline

Constructor to create server protocol instance.

Parameters
globalGlobal data for requests
sharedShared data for requests
loggerLogger to use, NULL for none

Member Function Documentation

◆ on_error()

void on_error ( AsyncError  err)
inline

◆ on_read()

bool on_read ( SizeT fixed_size,
AsyncBuffers buffers,
void *  context 
)
inline

◆ on_read_fixed()

bool on_read_fixed ( SizeT next_size,
SubString data,
void *  context 
)
inline

Member Data Documentation

◆ handler

Handler handler

Handler instance.

◆ logger

LoggerPtr logger

Logger to use.

◆ MIN_INITIAL_READ

const size_t MIN_INITIAL_READ = 0
static

◆ NEWLINE_LEN

const size_t NEWLINE_LEN = 2
static

The documentation for this struct was generated from the following file: