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
|
// **********************************************************************
//
// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************
#include <Ice/Ice.h>
#include <IceGrid/IceGrid.h>
#include <Pricing.h>
using namespace std;
using namespace Demo;
class PricingClient : public Ice::Application
{
public:
virtual int run(int, char*[]);
};
int
main(int argc, char* argv[])
{
PricingClient app;
return app.main(argc, argv, "config.client");
}
int
PricingClient::run(int argc, char* argv[])
{
if(argc > 1)
{
cerr << appName() << ": too many arguments" << endl;
return EXIT_FAILURE;
}
//
// Create a proxy to the well-known object with the `pricing'
// identity.
//
PricingEnginePrx pricing = PricingEnginePrx::uncheckedCast(communicator()->stringToProxy("pricing"));
if(!pricing)
{
cerr << argv[0] << ": couldn't find a `::Demo::PricingEngine' object." << endl;
return EXIT_FAILURE;
}
//
// If no context is set on the default locator (with the
// Ice.Default.Locator.Context property, see the comments from the
// `config.client' file in this directory), ask for the preferred
// currency.
//
Ice::Context ctx = communicator()->getDefaultLocator()->ice_getContext();
if(ctx["currency"].empty())
{
cout << "enter your preferred currency (USD, EUR, GBP, INR, AUD, JPY): ";
string currency;
cin >> currency;
//
// Setup a locator proxy with a currency context.
//
Ice::LocatorPrx locator = communicator()->getDefaultLocator();
ctx["currency"] = currency;
pricing = pricing->ice_locator(locator->ice_context(ctx));
}
else
{
cout << "Preferred currency configured for the client: " << ctx["currency"] << endl;
}
//
// Get the preferred currencies of the server
//
Ice::StringSeq currencies = pricing->getPreferredCurrencies();
cout << "Preferred currencies of the server: ";
for(Ice::StringSeq::const_iterator p = currencies.begin(); p != currencies.end(); ++p)
{
cout << *p;
if(p + 1 != currencies.end())
{
cout << ", ";
}
}
cout << endl;
return EXIT_SUCCESS;
}
|