23 #include "BeanContext.h"
25 RemoteComponentInt::RemoteComponentInt() {
30 RemoteComponentInt::~RemoteComponentInt() {
34 void RemoteComponentInt::setBeanContext(
BeanContext cntxt)
44 BeanContext::BeanContext() {
45 logger = Logger::getLogger(
"BeanContext");
48 BeanContext::BeanContext(
string host,
int port) {
53 BeanContext::~BeanContext() {
56 string BeanContext::getHost()
const
61 void BeanContext::setHost(
string host)
66 int BeanContext::getPort()
const
71 void BeanContext::setPort(
int port)
76 void* BeanContext::lookup(
string cmpName)
79 if(!client.isConnected())
80 client.connection(host,port);
81 if(client.isConnected())
85 classn =
"Component_"+cmpName+
"_Remote";
86 ClassInfo clas = ref.getClassInfo(classn);
89 _temp = ref.newInstanceGVP(ctor);
91 intf->setBeanContext(*
this);
96 void* BeanContext::invoke(
string name,vector<Object> args,
string bname,
string rettyp)
99 if(client.isConnected())
105 for (
unsigned int var = 0; var < args.size(); ++var)
107 argus +=
"<argument type=\""+rettyp+
"\">"+ser.serializeUnknown(args.at(var).getVoidPointer(),rettyp)+
"</argument>";
110 string call =
"<service name=\""+name+
"\" beanName=\""+bname+
"\" lang=\"c++\" returnType=\""+rettyp+
"\"><args>"+argus+
"</args></service>";
111 client.sendData(call);
113 while((call=client.getData())==
"")
118 Document doc = parser.getDocument(call);
119 Element message = doc.getRootElement();
120 if(message.getTagName().find(
"<return:exception>")==string::npos)
122 string tag = message.getTagName();
123 StringUtil::replaceFirst(tag,
"return:",
"");
124 message.setTagName(tag);
125 call = message.render();
127 retval = ser.unSerializeUnknown(call,tag);
131 throw "Exception occurred";
137 throw "Invalid BeanContext";