File size: 1,077 Bytes
158b61b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// -*- mode: c++; indent-tabs-mode: nil; tab-width: 2 -*-
#pragma once
#include "moses/TypeDef.h"

#ifdef WITH_THREADS
#include <boost/thread.hpp>
#include "moses/ThreadPool.h"
#endif

#include <xmlrpc-c/base.hpp>
#include <xmlrpc-c/registry.hpp>
#include <xmlrpc-c/server_abyss.hpp>
#include "Translator.h"
#include "Optimizer.h"
#include "Updater.h"
#include "CloseSession.h"
#include "Session.h"
#include "moses/parameters/ServerOptions.h"
#include <string>

namespace MosesServer
{
  class Server
  {
    Moses::ServerOptions m_server_options;
    SessionCache   m_session_cache;
    xmlrpc_c::registry m_registry;
    xmlrpc_c::methodPtr const m_updater;
    xmlrpc_c::methodPtr const m_optimizer;
    xmlrpc_c::methodPtr const m_translator;
    xmlrpc_c::methodPtr const m_close_session;
    std::string m_pidfile;
  public:
    Server(Moses::Parameter& params);
    ~Server();
    int run();
    void delete_session(uint64_t const session_id);

    Moses::ServerOptions const& 
    options() const;
    
    Session const& 
    get_session(uint64_t session_id);

  };
}