gecko-dev/xpcom/remote/tests/serverInOut.cpp

462 строки
17 KiB
C++

#include <stdio.h>
#include <stream.h>
#include <fstream.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>
#include "RPCServerService.h"
#include "nsISupports.h"
#include "nsIJVMManager.h"
#include "nsIRPCTestInOut.h"
#include "IDispatcher.h"
#include "nsIThread.h"
#include "deftest.h"
#include "proto.h"
class nsRPCTestInOutImpl : public nsIRPCTestInOut {
NS_DECL_ISUPPORTS
nsRPCTestInOutImpl() {
NS_INIT_REFCNT();
}
NS_IMETHOD TestInOut1(PRBool *bool) {
printf("TestInOut1 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test1 %d\n",*bool);
char *tmpstr = new char[200];
sprintf(tmpstr,"TestInOut1 before %d\n",*bool);
writeResult(SERVER_INOUT_RES, tmpstr);
*bool = PR_FALSE;
sprintf(tmpstr,"TestInOut1 after %d\n",*bool);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut2(PRUint8 *octet) {
printf("TestInOut2 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test2 %o\n",*octet);
char *tmpstr = new char[200];
sprintf(tmpstr,"TestInOut2 before %o\n",*octet);
writeResult(SERVER_INOUT_RES, tmpstr);
*octet = 88;
sprintf(tmpstr,"TestInOut2 after %o\n",*octet);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut3(PRInt16 *sInt) {
printf("TestInOut3 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test3 %d\n",*sInt);
char *tmpstr = new char[200];
sprintf(tmpstr,"TestInOut3 before %d\n",*sInt);
writeResult(SERVER_INOUT_RES, tmpstr);
*sInt = SHRT_MAX;
sprintf(tmpstr,"TestInOut3 after %d\n",*sInt);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut4(PRInt32 *lInt) {
printf("TestInOut4 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test4 %d\n",*lInt);
char *tmpstr = new char[200];
sprintf(tmpstr,"TestInOut4 before %l\n",*lInt);
writeResult(SERVER_INOUT_RES, tmpstr);
*lInt = LONG_MAX;
sprintf(tmpstr,"TestInOut4 after %l\n",*lInt);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut5(PRInt64 *llInt) {
printf("TestInOut5 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test5 %d\n",*llInt);
char *tmpstr = new char[200];
sprintf(tmpstr,"TestInOut5 before %l\n",*llInt);
writeResult(SERVER_INOUT_RES, tmpstr);
*llInt = LONG_MAX;
sprintf(tmpstr,"TestInOut5 after %l\n",*llInt);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut6(PRUint16 *usInt) {
printf("TestInOut6 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test6 %15u\n",*usInt);
char *tmpstr = new char[200];
sprintf(tmpstr,"TestInOut6 before %10u\n",*usInt);
writeResult(SERVER_INOUT_RES, tmpstr);
*usInt = USHRT_MAX;
sprintf(tmpstr,"TestInOut6 after %10u\n",*usInt);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut7(PRUint32 *ulInt) {
printf("TestInOut7 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test7 %15u\n",*ulInt);
char *tmpstr = new char[200];
sprintf(tmpstr,"TestInOut7 before %10u\n",*ulInt);
writeResult(SERVER_INOUT_RES, tmpstr);
*ulInt = ULONG_MAX;
sprintf(tmpstr,"TestInOut7 after %10u\n",*ulInt);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut8(PRUint64 *ullInt) {
printf("TestInOut8 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test8 %15u\n",*ullInt);
char *tmpstr = new char[200];
sprintf(tmpstr,"TestInOut8 before %10u\n",*ullInt);
writeResult(SERVER_INOUT_RES, tmpstr);
*ullInt = ULONG_MAX;
sprintf(tmpstr,"TestInOut8 after %10u\n",*ullInt);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut9(float *f) {
printf("TestInOut9 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test9 %.50f\n",*f);
char *tmpstr = new char[200];
sprintf(tmpstr,"TestInOut9 before %.50f\n",*f);
writeResult(SERVER_INOUT_RES, tmpstr);
*f = FLT_MAX;
sprintf(tmpstr,"TestInOut9 after %.50f\n",*f);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut10(double *d) {
printf("TestInOut10 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test10 %.50f\n",*d);
char *tmpstr = new char[500];
sprintf(tmpstr,"TestInOut10 before %.50f\n",*d);
writeResult(SERVER_INOUT_RES, tmpstr);
*d = DBL_MAX;
sprintf(tmpstr,"TestInOut10 after %.50f\n",*d);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut11(char *c) {
printf("TestInOut11 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test11 %c\n",*c);
char *tmpstr = new char[200];
sprintf(tmpstr,"TestInOut11 before %c\n",*c);
printf("THIS THIS THIS IS A TEST.... %s\n", tmpstr);
writeResult(SERVER_INOUT_RES, tmpstr);
*c = 'G';
sprintf(tmpstr,"TestInOut11 after %c\n",*c);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut12(PRUnichar *unic) {
printf("TestInOut12 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test12 %c\n",*unic);
char *tmpstr = new char[200];
sprintf(tmpstr,"TestInOut12 before %c\n",*unic);
writeResult(SERVER_INOUT_RES, tmpstr);
*unic = 'G';
sprintf(tmpstr,"TestInOut12 after %c\n",*unic);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut13(char **s) {
printf("TestInOut13 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test13 %s\n",*s);
char *tmpstr = new char[200];
sprintf(tmpstr,"TestInOut13 before %s\n",*s);
writeResult(SERVER_INOUT_RES, tmpstr);
*s = "remote ipc";
sprintf(tmpstr,"TestInOut13 after %s\n",*s);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut14(PRUnichar **unis) {
printf("TestInOut14 this=%p\n", this);
printf("--nsRPCTestInOutImpl::Test14 %s\n",*unis);
char *tmpstr = new char[200];
sprintf(tmpstr,"TestInOut14 before %s\n",*unis);
writeResult(SERVER_INOUT_RES, tmpstr);
//*unis = "remote ipc";
for (int i = 0; i < 10; i++) {
(*unis)[i] = 'a' + 1;
}
(*unis)[i] = '\0';
sprintf(tmpstr,"TestInOut14 after %s\n",*unis);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut15(PRUint32 *count, char **valueArray) {
printf("--TestInOut15\n");
char *tmpstr = new char[200];
printf("TestInOut15 before count %d\n", *count);
sprintf(tmpstr, "TestInOut15 before count %d\n", *count);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut15 before valueArray %s\n", *valueArray);
sprintf(tmpstr,"TestInOut15 before Array=%s\n",*valueArray);
writeResult(SERVER_INOUT_RES, tmpstr);
*valueArray = "Going in... remote ipc test.";
*count = strlen(*valueArray);
printf("TestInOut15 after count %d\n", *count);
sprintf(tmpstr, "TestInOut15 after count %d\n", *count);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut15 after valueArray %s\n", *valueArray);
sprintf(tmpstr,"TestInOut15 after Array=%s\n",*valueArray);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut16(PRBool *bBool, char *cChar,
PRUint16 *nUShort,
PRInt32 *nLong,PRUint32 *nULong,
PRInt64 *nHyper, PRUint64 *nUHyper,
float *fFloat, double *fDouble, char **aString)
{
printf("TestInOut16 before this=%p\n", this) ;
char *tmpstr = new char[200];
printf("TestInOut16 before %d\n",*bBool);
sprintf(tmpstr,"TestInOut16 before %d\n",*bBool);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 before %d\n",*nLong);
sprintf(tmpstr,"TestInOut16 before %d\n",*nLong);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 before %d\n",*nHyper);
sprintf(tmpstr,"TestInOut16 before %d\n",*nHyper);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 before %u\n",*nUShort);
sprintf(tmpstr,"TestInOut16 before %u\n",*nUShort);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 before %u\n",*nULong);
sprintf(tmpstr,"TestInOut16 before %u\n",*nULong);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 before %u\n",*nUHyper);
sprintf(tmpstr,"TestInOut16 before %u\n",*nUHyper);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 before %.50f\n",*fFloat);
sprintf(tmpstr,"TestInOut16 before %.50f\n",*fFloat);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 before %.50f\n",*fDouble);
sprintf(tmpstr,"TestInOut16 before %.50f\n",*fDouble);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 before %c\n",*cChar);
sprintf(tmpstr,"TestInOut16 before %c\n",*cChar);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 before %s\n",*aString);
sprintf(tmpstr,"TestInOut16 before %s\n",*aString);
writeResult(SERVER_INOUT_RES, tmpstr);
*bBool = PR_TRUE;
*cChar = 'A';
*nUShort = 2;
*nLong = 3;
*nULong = 4;
*nHyper = 5;
*nUHyper = 6;
*fFloat = 7;
*fDouble = 8;
*aString = "Remote ipc test.";
printf("TestInOut16 after %d\n",*bBool);
sprintf(tmpstr,"TestInOut16 after %d\n",*bBool);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 after %d\n",*nLong);
sprintf(tmpstr,"TestInOut16 after %d\n",*nLong);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 after %d\n",*nHyper);
sprintf(tmpstr,"TestInOut16 after %d\n",*nHyper);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 after %u\n",*nUShort);
sprintf(tmpstr,"TestInOut16 after %u\n",*nUShort);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 after %u\n",*nULong);
sprintf(tmpstr,"TestInOut16 after %u\n",*nULong);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 after %u\n",*nUHyper);
sprintf(tmpstr,"TestInOut16 after %u\n",*nUHyper);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 after %.50f\n",*fFloat);
sprintf(tmpstr,"TestInOut16 after %.50f\n",*fFloat);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 after %.50f\n",*fDouble);
sprintf(tmpstr,"TestInOut16 after %.50f\n",*fDouble);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 after %c\n",*cChar);
sprintf(tmpstr,"TestInOut16 after %c\n",*cChar);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut16 after %s\n",*aString);
sprintf(tmpstr,"TestInOut16 after %s\n",*aString);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut17(PRUint32 *count, PRInt32 **longArray) {
printf("--TestInOut17\n");
char *tmpstr = new char[200];
sprintf(tmpstr, "TestInOut17 before count %d\n", *count);
writeResult(SERVER_INOUT_RES, tmpstr);
for (int i = 0; i < *count; i++) {
printf("TestInOut17 before Array[%d]=%d\n",i,(*longArray)[i]);
sprintf(tmpstr,"TestInOut17 before Array[%d]=%d\n",i,(*longArray)[i]);
writeResult(SERVER_INOUT_RES, tmpstr);
}
*count = 5;
sprintf(tmpstr, "TestInOut17 after count %d\n", *count);
writeResult(SERVER_INOUT_RES, tmpstr);
*longArray = new PRInt32[*count];
for (i = 0; i < *count; i++) {
//longArray[i] = new PRInt32;
(*longArray)[i] = 55555 + i;
printf("TestInOut17 after Array[%d]=%d\n",i,(*longArray)[i]);
sprintf(tmpstr,"TestInOut17 after Array[%d]=%d\n",i,(*longArray)[i]);
writeResult(SERVER_INOUT_RES, tmpstr);
}
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestInOut18(PRBool *bBool, char *cChar, PRUint8 *nByte,
PRInt16 *nShort, PRUint16 *nUShort,
PRInt32 *nLong,PRUint32 *nULong,
PRInt64 *nHyper, PRUint64 *nUHyper,
float *fFloat, double *fDouble, char **aString)
{
printf("TestInOut18 before this=%p\n", this) ;
char *tmpstr = new char[200];
printf("TestInOut18 before %d\n",*bBool);
sprintf(tmpstr,"TestInOut18 before %d\n",*bBool);
writeResult(SERVER_INOUT_RES, tmpstr);
sprintf(tmpstr,"TestInOut18 before %o\n",*nByte);
writeResult(SERVER_INOUT_RES, tmpstr);
sprintf(tmpstr,"TestInOut18 before %d\n",*nShort);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 before %d\n",*nLong);
sprintf(tmpstr,"TestInOut18 before %d\n",*nLong);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 before %d\n",*nHyper);
sprintf(tmpstr,"TestInOut18 before %d\n",*nHyper);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 before %u\n",*nUShort);
sprintf(tmpstr,"TestInOut18 before %u\n",*nUShort);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 before %u\n",*nULong);
sprintf(tmpstr,"TestInOut18 before %u\n",*nULong);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 before %u\n",*nUHyper);
sprintf(tmpstr,"TestInOut18 before %u\n",*nUHyper);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 before %.50f\n",*fFloat);
sprintf(tmpstr,"TestInOut18 before %.50f\n",*fFloat);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 before %.50f\n",*fDouble);
sprintf(tmpstr,"TestInOut18 before %.50f\n",*fDouble);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 before %c\n",*cChar);
sprintf(tmpstr,"TestInOut18 before %c\n",*cChar);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 before %s\n",*aString);
sprintf(tmpstr,"TestInOut18 before %s\n",*aString);
writeResult(SERVER_INOUT_RES, tmpstr);
*bBool = PR_TRUE;
*nByte = 777;
*cChar = 'A';
*nShort = 1;
*nUShort = 2;
*nLong = 3;
*nULong = 4;
*nHyper = 5;
*nUHyper = 6;
*fFloat = 7;
*fDouble = 8;
*aString = "Remote ipc test.";
printf("TestInOut18 after %d\n",*bBool);
sprintf(tmpstr,"TestInOut18 after %d\n",*bBool);
writeResult(SERVER_INOUT_RES, tmpstr);
sprintf(tmpstr,"TestInOut18 after %o\n",*nByte);
writeResult(SERVER_INOUT_RES, tmpstr);
sprintf(tmpstr,"TestInOut18 after %d\n",*nShort);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 after %d\n",*nLong);
sprintf(tmpstr,"TestInOut18 after %d\n",*nLong);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 after %d\n",*nHyper);
sprintf(tmpstr,"TestInOut18 after %d\n",*nHyper);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 after %u\n",*nUShort);
sprintf(tmpstr,"TestInOut18 after %u\n",*nUShort);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 after %u\n",*nULong);
sprintf(tmpstr,"TestInOut18 after %u\n",*nULong);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 after %u\n",*nUHyper);
sprintf(tmpstr,"TestInOut18 after %u\n",*nUHyper);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 after %.50f\n",*fFloat);
sprintf(tmpstr,"TestInOut18 after %.50f\n",*fFloat);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 after %.50f\n",*fDouble);
sprintf(tmpstr,"TestInOut18 after %.50f\n",*fDouble);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 after %c\n",*cChar);
sprintf(tmpstr,"TestInOut18 after %c\n",*cChar);
writeResult(SERVER_INOUT_RES, tmpstr);
printf("TestInOut18 after %s\n",*aString);
sprintf(tmpstr,"TestInOut18 after %s\n",*aString);
writeResult(SERVER_INOUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
};
NS_IMPL_ISUPPORTS(nsRPCTestInOutImpl, NS_GET_IID(nsIRPCTestInOut));
int main(int argc, char **args) {
int i;
const short num = 2;
nsRPCTestInOutImpl * test[num];
setProcessId(INOUT_FDATA);
for(i = 0; i < num; i++) {
test[i] = new nsRPCTestInOutImpl();
}
RPCServerService * rpcService = RPCServerService::GetInstance();
IDispatcher *dispatcher;
rpcService->GetDispatcher(&dispatcher);
for(i = 0; i < num; i++) {
dispatcher->RegisterWithOID(test[i], i + 1);
}
while(1) {
PR_Sleep(100);
}
}