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

275 строки
8.2 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 "nsIRPCTestOut.h"
#include "IDispatcher.h"
#include "nsIThread.h"
#include "deftest.h"
#include "proto.h"
class nsRPCTestOutImpl : public nsIRPCTestOut {
NS_DECL_ISUPPORTS
nsRPCTestOutImpl () {
NS_INIT_REFCNT();
}
NS_IMETHOD TestOut1(PRBool *bool) {
printf("TestOut1 this=%p\n", this);
*bool = PR_FALSE;
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut1 %d\n",*bool);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut2(PRUint8 *octet) {
printf("TestOut2 this=%p\n", this);
*octet = 88;
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut2 %o\n",*octet);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut3(PRInt16 *sInt) {
printf("TestOut3 this=%p\n", this);
*sInt = SHRT_MAX;
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut3 %d\n",*sInt);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut4(PRInt32 *lInt) {
printf("TestOut4 this=%p\n", this);
*lInt = LONG_MAX;
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut4 %d\n",*lInt);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut5(PRInt64 *llInt) {
printf("TestOut5 this=%p\n", this);
*llInt = LONG_MAX;
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut5 %d\n",*llInt);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut6(PRUint16 *usInt) {
printf("TestOut6 this=%p\n", this);
*usInt = USHRT_MAX;
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut6 %u\n",*usInt);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut7(PRUint32 *ulInt) {
printf("TestOut7 this=%p\n", this);
*ulInt = ULONG_MAX;
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut7 %u\n",*ulInt);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut8(PRUint64 *ullInt) {
printf("TestOut8 this=%p\n", this);
*ullInt = ULONG_MAX;
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut8 %u\n",*ullInt);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut9(float *f) {
printf("TestOut9 this=%p\n", this);
*f = FLT_MAX;
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut9 %.50f\n",*f);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut10(double *d) {
printf("TestOut10 this=%p\n", this);
*d = DBL_MAX;
char *tmpstr = new char[500];
sprintf(tmpstr,"TestOut10 %.50f\n",*d);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut11(char *c) {
printf("TestOut11 this=%p\n", this);
*c = 'G';
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut11 %c\n",*c);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut12(PRUnichar *unic) {
printf("TestOut12 this=%p\n", this);
*unic = 'G';
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut12 %c\n",*unic);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut13(char **s) {
printf("TestOut13 this=%p\n", this);
*s = "remote ipc";
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut13 %s\n",*s);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut14(PRUnichar **unis) {
printf("TestOut14 this=%p\n", this);
//*unis = "remote ipc";
*unis = new PRUnichar[50];
for (int i = 0; i < 10; i++) {
(*unis)[i] = 'a' + 1;
}
(*unis)[i] = '\0';
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut14 %s\n",*unis);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut15(PRUint32 *count, char **valueArray) {
printf("--TestOut15\n");
*valueArray = "This is a remote ipc test.";
*count = strlen(*valueArray);
char *tmpstr = new char[200];
printf("TestOut15 count %d\n", *count);
sprintf(tmpstr, "TestOut15 count %d\n", *count);
writeResult(SERVER_OUT_RES, tmpstr);
printf("TestOut15 valueArray %s\n", *valueArray);
sprintf(tmpstr,"TestOut15 Array=%s\n",*valueArray);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut16(PRBool *bBool, char *cChar, PRUint8 *nByte,
PRInt16 *nShort, PRUint16 *nUShort,
PRInt32 *nLong,PRUint32 *nULong,
PRInt64 *nHyper, PRUint64 *nUHyper,
float *fFloat, double *fDouble, char **aString)
{
*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("TestOut16 this=%p\n", this) ;
char *tmpstr = new char[200];
sprintf(tmpstr,"TestOut16 PRBool %d\n",*bBool);
writeResult(SERVER_OUT_RES, tmpstr);
sprintf(tmpstr,"TestOut16 PRUint8 %o\n",*nByte);
writeResult(SERVER_OUT_RES, tmpstr);
sprintf(tmpstr,"TestOut16 PRInt16 %d\n",*nShort);
writeResult(SERVER_OUT_RES, tmpstr);
sprintf(tmpstr,"TestOut16 PRInt32 %d\n",*nLong);
writeResult(SERVER_OUT_RES, tmpstr);
sprintf(tmpstr,"TestOut16 PRInt64 %d\n",*nHyper);
writeResult(SERVER_OUT_RES, tmpstr);
sprintf(tmpstr,"TestOut16 PRUint16 %u\n",*nUShort);
writeResult(SERVER_OUT_RES, tmpstr);
sprintf(tmpstr,"TestOut16 PRUint32 %u\n",*nULong);
writeResult(SERVER_OUT_RES, tmpstr);
sprintf(tmpstr,"TestOut16 PRUint64 %u\n",*nUHyper);
writeResult(SERVER_OUT_RES, tmpstr);
sprintf(tmpstr,"TestOut16 float %.50f\n",*fFloat);
writeResult(SERVER_OUT_RES, tmpstr);
sprintf(tmpstr,"TestOut16 double %.50f\n",*fDouble);
writeResult(SERVER_OUT_RES, tmpstr);
sprintf(tmpstr,"TestOut16 char %c\n",*cChar);
writeResult(SERVER_OUT_RES, tmpstr);
sprintf(tmpstr,"TestOut16 string %s\n",*aString);
writeResult(SERVER_OUT_RES, tmpstr);
delete tmpstr;
return NS_OK;
}
NS_IMETHOD TestOut17(PRUint32 *count, PRInt32 **longArray) {
printf("--TestOut17\n");
char *tmpstr = new char[200];
*count = 5;
sprintf(tmpstr, "TestOut17 count %d\n", *count);
writeResult(SERVER_OUT_RES, tmpstr);
*longArray = new PRInt32[*count];
for (int i = 0; i < *count; i++) {
(*longArray)[i] = 55555 + i;
printf("TestOut17 Array[%d]=%d\n",i,(*longArray)[i]);
sprintf(tmpstr,"TestOut17 Array[%d]=%d\n",i,(*longArray)[i]);
writeResult(SERVER_OUT_RES, tmpstr);
}
delete tmpstr;
return NS_OK;
}
};
NS_IMPL_ISUPPORTS(nsRPCTestOutImpl , NS_GET_IID(nsIRPCTestOut));
int main(int argc, char **args) {
int i;
const short num = 5;
nsRPCTestOutImpl * test[num];
setProcessId(OUT_FDATA);
for(i = 0; i < num; i++) {
test[i] = new nsRPCTestOutImpl();
}
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);
}
}