ICE:3.0.1
VC++ 6.0
I use Ice in dll.
this is code in dll:
My Stats Class:
CStats_bytesSent stats_bytesSent;
CStats_bytesReceived Stats_bytesReceived;
class IceStats:virtual public Ice::Stats
{
public:
virtual void bytesSent(const string &prot,Ice::Int num)
{
if(stats_bytesSent=NULL) return;
stats_bytesSent(num);
};
virtual void bytesReceived(const string &prot,Ice::Int num)
{
if(Stats_bytesReceived=NULL) return;
Stats_bytesReceived(num);
};
};
typedef void (_stdcall *CPrintPos)(int result);
int _stdcall loadice(int argc, char *argv[])
{
if(printpos==NULL)
return ICE_CALLBACK_ERROR;
try
{
ic=Ice::initialize(argc,argv);
Ice::ObjectPrx base=ic->stringToProxy("print:default -p 10000");
print=printIPrx::checkedCast(base);
if(!print)
throw "Invalid proxy";
printcallback=new Cprintcallback();
return 0;
}
catch(const char *msg)
{
unloadice();
return -2;
}
};
int _stdcall sendmessage(int Messageid,void* Point)
{
switch(Messageid)
{
case ICE_FUNCTION_POINT:
{
printpos=CPrintPos(Point);
break;
}
case ICE_Request_Print:
{
print->print_async(printcallback);
break;
}
case ICE_STATS_ENABLE:
{
if(!ic) return ICE_STATS_ERROR;
if(!stats)
stats=new IceStats();
ic->setStats(stats);
}
case ICE_STATS_SEND:
{
if((Point=NULL)||(!ic)||(!stats)) return ICE_STATS_ERROR;
stats_bytesSent=CStats_bytesSent(Point);
}
case ICE_STATS_RECEIVED:
{
if((Point=NULL)||(!ic)||(!stats)) return ICE_STATS_ERROR;
Stats_bytesReceived=CStats_bytesReceived(Point);
}
}
return 0;
};
external Application:
step :
1.sendmessage(ICE_FUNCTION_POINT,callback);
2.loadice(0,nil);
3.sendmessage(ICE_STATS_ENABLE,nil);
4.sendmessage(ICE_STATS_SEND,Stats_bytesSent));
5.sendmessage(ICE_STATS_RECEIVED,Stats_bytesReceiv ed));
6.sendmessage(ICE_Request_Print,nil);
·············
7.unloadice();
But My Ice Stats doesn't Work.

Reply With Quote