** NOT PART OF TBOX BUILDS **
BlackConnect M2 check in. It should be possible to implement any scriptable interface in java. Also it should be possible to use any scriptable object from java. Fixed: 15498, 15500 git-svn-id: svn://10.0.0.236/trunk@78858 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -29,8 +29,11 @@ class bcIMarshaler {
|
||||
public:
|
||||
virtual int WriteSimple(void *ptr, bcXPType type) = 0;
|
||||
virtual int WriteString(void *ptr, size_t size) = 0;
|
||||
virtual int WriteArray(void *ptr, size_t length, bcXPType type) = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -28,7 +28,6 @@ class bcIUnMarshaler {
|
||||
public:
|
||||
virtual int ReadSimple(void *ptr, bcXPType type) = 0;
|
||||
virtual int ReadString(void *ptr, size_t *size, bcIAllocator * allocator = 0) = 0;
|
||||
virtual int ReadArray(void *ptr, size_t *length, bcXPType type, bcIAllocator * allocator) = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -58,7 +58,7 @@ bcIUnMarshaler * Call::GetUnMarshaler() {
|
||||
return NULL;
|
||||
}
|
||||
char *buf = out->str();
|
||||
cout<<"Call::GetUnMarshaler "<<out->pcount()<<"\n";
|
||||
// cout<<"Call::GetUnMarshaler "<<out->pcount()<<"\n";
|
||||
#if 0
|
||||
cout<<"Call::GetUnMarshaler buf:\n";
|
||||
for (int i = 0; i < out->pcount(); i++) {
|
||||
|
||||
@@ -43,38 +43,10 @@ int Marshaler::WriteString(void *ptr, size_t size) {
|
||||
&& ptr) {
|
||||
size = 1;
|
||||
}
|
||||
WriteArray(ptr,size, bc_T_CHAR);
|
||||
out->write((const char*)&size, sizeof(size_t));
|
||||
if (size) {
|
||||
out->write((const char*)ptr,type2size(bc_T_CHAR)*size);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Marshaler::WriteArray(void *ptr, size_t length, bcXPType type) {
|
||||
if (!ptr) {
|
||||
length = 0;
|
||||
}
|
||||
cout<<"Marshaler::WriteArray("<<length<<")\n";
|
||||
out->write((const char*)&length, sizeof(size_t));
|
||||
switch (type) {
|
||||
case bc_T_CHAR_STR:
|
||||
case bc_T_WCHAR_STR:
|
||||
{
|
||||
for (unsigned int i = 0; i < length; i++) {
|
||||
char *str = ((char**)ptr)[i];
|
||||
size_t size = (!str) ? 0 : strlen(str)+1; //we want to store \0
|
||||
WriteString((void *)str, size);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
if (length) {
|
||||
out->write((const char*)ptr,type2size(type)*length);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@ public:
|
||||
virtual ~Marshaler();
|
||||
virtual int WriteSimple(void *ptr, bcXPType type);
|
||||
virtual int WriteString(void *ptr, size_t size);
|
||||
virtual int WriteArray(void *ptr, size_t length, bcXPType type);
|
||||
private:
|
||||
ostream * out;
|
||||
};
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
#include "Call.h"
|
||||
|
||||
ORB::ORB() {
|
||||
currentID = 0;
|
||||
currentID = 1;
|
||||
for (int i = 0; i < STUBS_COUNT; i++) {
|
||||
stubs[i] = 0;
|
||||
stubs[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,10 +50,10 @@ int ORB::SendReceive(bcICall *call) {
|
||||
call->GetParams(&iid,&oid,&mid);
|
||||
bcIStub *stub = GetStub(&oid);
|
||||
if (stub) {
|
||||
stub->Dispatch(call);
|
||||
return 0;
|
||||
stub->Dispatch(call);
|
||||
return 0;
|
||||
} else {
|
||||
return 1; //nb need to think about error values
|
||||
return 1; //nb need to think about error values
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,13 @@ int UnMarshaler::ReadSimple(void *ptr, bcXPType type) {
|
||||
return 0;
|
||||
}
|
||||
int UnMarshaler::ReadString(void *ptr, size_t *size, bcIAllocator * allocator) {
|
||||
ReadArray(ptr, size, bc_T_CHAR, allocator);
|
||||
size_t length;
|
||||
in->read((char*)size,sizeof(size_t));
|
||||
*(char**)ptr = (char *)allocator->Alloc(*size * type2size(bc_T_CHAR));
|
||||
if (*size) {
|
||||
in->read(*(char**)ptr,*size * type2size(bc_T_CHAR));
|
||||
}
|
||||
|
||||
if (*size == 1) {
|
||||
if (!(*(char**)ptr)[0]) {
|
||||
*size = 0;
|
||||
@@ -45,85 +51,3 @@ int UnMarshaler::ReadString(void *ptr, size_t *size, bcIAllocator * allocator) {
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int UnMarshaler::ReadArray(void *ptr, size_t *length, bcXPType type, bcIAllocator * allocator) {
|
||||
in->read((char*)length,sizeof(size_t));
|
||||
cout<<"UnMarshaler *length "<<*length<<"\n";
|
||||
|
||||
if (!length) {
|
||||
ptr = 0;
|
||||
}
|
||||
switch (type) {
|
||||
case bc_T_CHAR_STR:
|
||||
case bc_T_WCHAR_STR:
|
||||
{
|
||||
char **strArray = *(char***)ptr;
|
||||
*strArray = (char*)allocator->Alloc(*length * sizeof(char*));
|
||||
|
||||
for (unsigned int i = 0; i < *length; i++) {
|
||||
char * str;
|
||||
size_t size;
|
||||
ReadString((void*)&str, &size, allocator);
|
||||
strArray[i] = str;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
char *p = *(char**)ptr = (char *)allocator->Alloc(*length * type2size(type));
|
||||
if (*length) {
|
||||
in->read(p,*length * type2size(type));
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@ public:
|
||||
virtual ~UnMarshaler();
|
||||
virtual int ReadSimple(void *ptr, bcXPType type);
|
||||
virtual int ReadString(void *ptr, size_t *size, bcIAllocator * allocator);
|
||||
virtual int ReadArray(void *ptr, size_t *length, bcXPType type, bcIAllocator * allocator);
|
||||
private:
|
||||
istream *in;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user