** 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:
idk%eng.sun.com
2000-09-12 08:54:13 +00:00
parent 3aedef481f
commit 15e68a5a17
43 changed files with 1734 additions and 844 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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++) {

View File

@@ -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;
}

View File

@@ -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;
};

View File

@@ -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
}
}

View File

@@ -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;
}

View File

@@ -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;
};