summaryrefslogtreecommitdiff
path: root/cpp/test/IcePack/deployer/Service.cpp
blob: 0f27fe5fb0faef94e169a11db4cb9c3d164c518d (plain)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// **********************************************************************
//
// Copyright (c) 2001
// ZeroC, Inc.
// Huntsville, AL, USA
//
// All Rights Reserved
//
// **********************************************************************

#include <Ice/Ice.h>
#include <IceBox/IceBox.h>
#include <Freeze/Freeze.h>
#include <TestI.h>

#if defined(_WIN32)
#   define TEST_SERVICE_API __declspec(dllexport)
#else
#   define TEST_SERVICE_API /**/
#endif

using namespace std;
using namespace Ice;

class TEST_SERVICE_API ServiceI : public ::IceBox::Service
{
public:

    ServiceI();
    virtual ~ServiceI();

    virtual void start(const string&,
                      const CommunicatorPtr&,
                      const StringSeq&);

    virtual void stop();
};

class TEST_SERVICE_API FreezeServiceI : public ::IceBox::FreezeService
{
public:

    FreezeServiceI();
    virtual ~FreezeServiceI();

    virtual void start(const string&,
		       const CommunicatorPtr&,
		       const StringSeq&,
		       const Freeze::DBEnvironmentPtr&);

    virtual void stop();
};

extern "C"
{

//
// Factory function
//
TEST_SERVICE_API ::IceBox::Service*
create(CommunicatorPtr communicator)
{
    return new ServiceI;
}

TEST_SERVICE_API ::IceBox::FreezeService*
createFreezeService(CommunicatorPtr communicator)
{
    return new FreezeServiceI;
}

}

ServiceI::ServiceI()
{
}

ServiceI::~ServiceI()
{
}

void
ServiceI::start(const string& name,
		const CommunicatorPtr& communicator,
		const StringSeq& args)
{
    Ice::PropertiesPtr properties = communicator->getProperties();

    Ice::ObjectAdapterPtr adapter = communicator->createObjectAdapter(name);
    Ice::ObjectPtr object = new TestI(adapter, properties);
    adapter->add(object, Ice::stringToIdentity(properties->getProperty(name + ".Identity")));
    adapter->activate();
}

void
ServiceI::stop()
{
}

FreezeServiceI::FreezeServiceI()
{
}

FreezeServiceI::~FreezeServiceI()
{
}

void
FreezeServiceI::start(const string& name,
		      const CommunicatorPtr& communicator,
		      const StringSeq& args,
		      const Freeze::DBEnvironmentPtr& dbEnv)
{
    //
    // Ensure that we can create an environment.
    //
    Freeze::DBPtr db = dbEnv->openDB("testdb", true);

    Ice::PropertiesPtr properties = communicator->getProperties();

    Ice::ObjectAdapterPtr adapter = communicator->createObjectAdapter(name);
    Ice::ObjectPtr object = new TestI(adapter, communicator->getProperties());
    adapter->add(object, Ice::stringToIdentity(properties->getProperty(name + ".Identity")));
    adapter->activate();
}

void
FreezeServiceI::stop()
{
}