35 #include <IceUtil/IceUtil.h>
54 class ActCvImpl :
public ActCV::Vision,
public ActCvObserver {
62 std::string combinedData;
65 std::map<std::string, std::string> data;
67 void ComputeCombinedData() {
68 std::ostringstream ostr;
70 for (std::map<std::string, std::string>::iterator i=data.begin();
77 combinedData=ostr.str();
80 ActCvImpl() : combinedData(
"()") {
82 std::string GetCurrent(
const Ice::Current&) {
84 std::string result = combinedData;
92 ComputeCombinedData();
96 const char* GetName()
const {
104 class KeyboardImpl :
public ActCV::Keyboard {
108 KeyboardImpl() : isAttached(false) {
112 void PressKey(
int keyCode,
const Ice::Current&) {
113 std::cout <<
"received key " << keyCode << std::endl;
122 const char* GetName()
const {
131 friend struct IceServerAutoStop;
132 static IceServer *singleInstance;
133 IceServer() : adapterName(
"ActCV") {
139 communicator = Ice::initialize();
141 communicator->createObjectAdapterWithEndpoints(adapterName,
"tcp -p 34985");
142 adapter->add(&visionImpl, communicator->stringToIdentity(visionImpl.GetName()));
143 adapter->add(&keyboardImpl, communicator->stringToIdentity(keyboardImpl.GetName()));
145 }
catch(
const Ice::Exception& ex) {
146 std::cerr << ex << std::endl;
150 Ice::CommunicatorPtr communicator;
151 Ice::ObjectAdapterPtr adapter;
153 std::string adapterName;
155 ActCvImpl visionImpl;
156 KeyboardImpl keyboardImpl;
161 static IceServer* GetInstance() {
162 if (singleInstance==NULL) {
163 singleInstance=
new IceServer();
165 return singleInstance;
169 communicator->destroy();
180 Ice::CommunicatorPtr communicator;
181 ActCV::KeyboardPrx keyboard;
183 IceClient() : keyboard(0), communicator(0) {}
184 void ConnectTo(
const char* name,
int port);
185 void SendKey(
int keyCode);