File: commander.h

package info (click to toggle)
eris 1.3.13-2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 2,916 kB
  • ctags: 1,679
  • sloc: cpp: 12,043; sh: 9,050; perl: 287; makefile: 197; ansic: 165
file content (45 lines) | stat: -rw-r--r-- 957 bytes parent folder | download | duplicates (7)
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
#ifndef TEST_COMMANDER_H
#define TEST_COMMANDER_H

#include <skstream/skstream.h>

#include <Atlas/Net/Stream.h>
#include <Atlas/Codec.h>
#include <Atlas/Objects/Decoder.h>
#include <Atlas/Objects/ObjectsFwd.h>
#include <Atlas/Objects/Root.h>

#include <deque>

class StubServer;

class Commander : public Atlas::Objects::ObjectsDecoder
{
public:
    Commander(StubServer* stub, int fd);
    ~Commander();
    
    basic_socket* getStream()
    { return &m_channel; }
    
    void recv();

protected:
    virtual void objectArrived(const Atlas::Objects::Root& obj);
    
private:
    void negotiate();
    void dispatch(const Atlas::Objects::Operation::RootOperation& op);
    
    StubServer* m_server;
    tcp_socket_stream m_channel;
    
    Atlas::Codec* m_codec;
    Atlas::Net::StreamAccept* m_acceptor;
    Atlas::Objects::ObjectsEncoder* m_encoder;
    
    typedef std::deque<Atlas::Objects::Root> RootDeque;
    RootDeque m_objDeque;
};

#endif