summaryrefslogtreecommitdiff
path: root/cpp/demo/Freeze/casino/Server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/demo/Freeze/casino/Server.cpp')
-rw-r--r--cpp/demo/Freeze/casino/Server.cpp95
1 files changed, 51 insertions, 44 deletions
diff --git a/cpp/demo/Freeze/casino/Server.cpp b/cpp/demo/Freeze/casino/Server.cpp
index 5f78ebc6b5f..46138f8baf8 100644
--- a/cpp/demo/Freeze/casino/Server.cpp
+++ b/cpp/demo/Freeze/casino/Server.cpp
@@ -36,40 +36,39 @@ private:
//
public:
#endif
+
CasinoStore::PersistentBankPrx _bankPrx;
Freeze::TransactionalEvictorPtr _bankEvictor;
Freeze::TransactionalEvictorPtr _playerEvictor;
Freeze::TransactionalEvictorPtr _betEvictor;
- BetResolver _betResolver;
+ BetResolver _betResolver;
int _bankEdge;
};
-int
+int
main(int argc, char* argv[])
{
CasinoServer app("db");
return app.main(argc, argv, "config.server");
}
-
template<class T>
class ObjectFactory : public Ice::ObjectFactory
{
public:
-
+
virtual Ice::ObjectPtr
create(const string& type)
{
return new T;
}
-
+
virtual void
destroy()
{
}
};
-
int
CasinoServer::run(int argc, char* argv[])
{
@@ -92,7 +91,7 @@ CasinoServer::run(int argc, char* argv[])
_bankEdge = 1;
}
cout << "Bank edge is " << _bankEdge << endl;
-
+
//
// Create an object adapter
//
@@ -104,15 +103,15 @@ CasinoServer::run(int argc, char* argv[])
communicator()->addObjectFactory(new ObjectFactory<BankI>, CasinoStore::PersistentBank::ice_staticId());
communicator()->addObjectFactory(new ObjectFactory<PlayerI>, CasinoStore::PersistentPlayer::ice_staticId());
communicator()->addObjectFactory(new ObjectFactory<BetI>, CasinoStore::PersistentBet::ice_staticId());
-
+
//
// Create evictors; each type gets its own type-specific evictor
//
-
+
//
// Bank evictor
//
-
+
class BankInitializer : public Freeze::ServantInitializer
{
public:
@@ -122,21 +121,24 @@ CasinoServer::run(int argc, char* argv[])
{
}
- virtual void
- initialize(const Ice::ObjectAdapterPtr& adapter, const Ice::Identity& identity, const string& facet, const Ice::ObjectPtr& servant)
+ virtual void
+ initialize(const Ice::ObjectAdapterPtr& adapter, const Ice::Identity& identity, const string& facet,
+ const Ice::ObjectPtr& servant)
{
BankI* bank = dynamic_cast<BankI*>(servant.get());
- bank->init(_server._bankPrx, _server._bankEvictor, _server._playerEvictor, _server._betEvictor, _server._betResolver, _server._bankEdge);
+ bank->init(_server._bankPrx, _server._bankEvictor, _server._playerEvictor, _server._betEvictor,
+ _server._betResolver, _server._bankEdge);
}
+
private:
CasinoServer& _server;
};
_bankEvictor =
- Freeze::createTransactionalEvictor(adapter, _envName, "bank",
+ Freeze::createTransactionalEvictor(adapter, _envName, "bank",
createTypeMap(CasinoStore::PersistentBank::ice_staticId()),
new BankInitializer(*this));
-
+
int size = properties->getPropertyAsInt("Bank.EvictorSize");
if(size > 0)
{
@@ -145,7 +147,6 @@ CasinoServer::run(int argc, char* argv[])
adapter->addServantLocator(_bankEvictor, "bank");
-
//
// Player evictor
//
@@ -158,33 +159,34 @@ CasinoServer::run(int argc, char* argv[])
_server(server)
{
}
-
- virtual void
- initialize(const Ice::ObjectAdapterPtr& adapter, const Ice::Identity& identity, const string& facet, const Ice::ObjectPtr& servant)
+
+ virtual void
+ initialize(const Ice::ObjectAdapterPtr& adapter, const Ice::Identity& identity, const string& facet,
+ const Ice::ObjectPtr& servant)
{
- CasinoStore::PersistentPlayerPrx prx =
+ CasinoStore::PersistentPlayerPrx prx =
CasinoStore::PersistentPlayerPrx::uncheckedCast(adapter->createProxy(identity));
-
+
PlayerI* player = dynamic_cast<PlayerI*>(servant.get());
player->init(prx, _server._playerEvictor, _server._bankPrx);
}
+
private:
CasinoServer& _server;
};
-
+
_playerEvictor =
- Freeze::createTransactionalEvictor(adapter, _envName, "player",
+ Freeze::createTransactionalEvictor(adapter, _envName, "player",
createTypeMap(CasinoStore::PersistentPlayer::ice_staticId()),
new PlayerInitializer(*this));
-
+
size = properties->getPropertyAsInt("Player.EvictorSize");
if(size > 0)
{
_playerEvictor->setSize(size);
}
-
- adapter->addServantLocator(_playerEvictor, "player");
+ adapter->addServantLocator(_playerEvictor, "player");
//
// Bet evictor
@@ -198,19 +200,21 @@ CasinoServer::run(int argc, char* argv[])
_server(server)
{
}
-
- virtual void
- initialize(const Ice::ObjectAdapterPtr& adapter, const Ice::Identity& identity, const string& facet, const Ice::ObjectPtr& servant)
- {
+
+ virtual void
+ initialize(const Ice::ObjectAdapterPtr& adapter, const Ice::Identity& identity, const string& facet,
+ const Ice::ObjectPtr& servant)
+ {
BetI* bet = dynamic_cast<BetI*>(servant.get());
bet->init(_server._betEvictor, _server._bankEdge);
}
+
private:
CasinoServer& _server;
};
_betEvictor =
- Freeze::createTransactionalEvictor(adapter, _envName, "bet",
+ Freeze::createTransactionalEvictor(adapter, _envName, "bet",
createTypeMap(CasinoStore::PersistentBet::ice_staticId()),
new BetInitializer(*this));
size = properties->getPropertyAsInt("Bet.EvictorSize");
@@ -220,7 +224,6 @@ CasinoServer::run(int argc, char* argv[])
}
adapter->addServantLocator(_betEvictor, "bet");
-
//
// Prepare startup
@@ -233,27 +236,31 @@ CasinoServer::run(int argc, char* argv[])
//
// Retrieve / create the bank
//
-
+
Ice::Identity bankId = communicator()->stringToIdentity("bank/Montecito");
_bankPrx = CasinoStore::PersistentBankPrx::uncheckedCast(adapter->createProxy(bankId));
-
+
if(!_bankEvictor->hasObject(bankId))
{
- _bankEvictor->add(new BankI(_bankPrx, _bankEvictor, _playerEvictor, _betEvictor, _betResolver, _bankEdge), bankId);
+ _bankEvictor->add(new BankI(_bankPrx, _bankEvictor, _playerEvictor, _betEvictor, _betResolver, _bankEdge),
+ bankId);
}
-
+
//
// reload existing bets into the bet resolver
//
-
+
_bankPrx->reloadBets();
-
+
//
// Create players / recreate missing players
//
- const string players[] = { "al", "bob", "charlie", "dave", "ed", "fred", "gene", "herb", "irvin", "joe", "ken", "lance" };
-
+ const string players[] =
+ {
+ "al", "bob", "charlie", "dave", "ed", "fred", "gene", "herb", "irvin", "joe", "ken", "lance"
+ };
+
for(size_t i = 0; i < 12; ++i)
{
#if defined(_MSC_VER) && (_MSC_VER < 1300)
@@ -267,16 +274,16 @@ CasinoServer::run(int argc, char* argv[])
{
_playerEvictor->add(new PlayerI, ident);
}
- }
-
+ }
+
//
// Everything is ready, activate
//
adapter->activate();
-
+
shutdownOnInterrupt();
communicator()->waitForShutdown();
-
+
_betResolver.destroy();
}
catch(...)