2
0
mirror of https://github.com/esiur/esiur-js.git synced 2025-07-14 06:03:12 +00:00
This commit is contained in:
2022-03-28 20:18:12 +03:00
parent 98f5118644
commit fa76cf99a6
9 changed files with 50 additions and 40 deletions

View File

@ -322,7 +322,7 @@ export default class Codec {
static isLocalResource( resource, connection) {
if (connection == null) return false;
if (resource instanceof DistributedResource) {
if (resource.connection == connection) return true;
if (resource._p.connection == connection) return true;
}
return false;
}

View File

@ -13,6 +13,7 @@ import TypedMap from './TypedMap.js';
import PropertyValueArray from './PropertyValueArray.js';
import PropertyValue from './PropertyValue.js';
import Record from './Record.js';
import { UInt64, Int64 } from '../Data/ExtendedTypes.js';
export class PropertyValueParserResults {
//final int size;
@ -114,12 +115,12 @@ export default class DataDeserializer {
static int64Parser(
data, offset, length, connection) {
return new AsyncReply(data.getInt64(offset));
return new AsyncReply(new Int64(data.getInt64(offset)));
}
static uInt64Parser(
data, offset, length, connection) {
return new AsyncReply(data.getUint64(offset));
return new AsyncReply(new UInt64(data.getUint64(offset)));
}
static dateTimeParser(
@ -222,10 +223,10 @@ export default class DataDeserializer {
enumVal.index = index;
enumVal.name = template.constants[index].name;
enumVal.value = template.constants[index].value;
return new AsyncReply.ready(enumVal);
return new AsyncReply(enumVal);
} else {
return AsyncReply.ready(IEnum(index, template.constants[index].value,
template.constants[index].name));
return new AsyncReply(new IEnum(index, template.constants[index].value,
template.constants[index].name, template));
}
} else {
var reply = new AsyncReply();
@ -242,7 +243,7 @@ export default class DataDeserializer {
reply.trigger(enumVal);
} else {
reply.trigger(new IEnum(
index, tmp.constants[index].value, tmp.constants[index].name));
index, tmp.constants[index].value, tmp.constants[index].name, tmp));
}
} else
reply.triggerError(new Error("Template not found for enum"));

View File

@ -129,7 +129,7 @@ export default class DataSerializer {
return new DataSerializerComposeResults(
TransmissionTypeIdentifier.Null, new DC(0));
var template = Warehouse.getTemplateByType(value.runtimeType);
var template = Warehouse.getTemplateByType(value.runtimeType) ?? value.template;
if (template == null)
return new DataSerializerComposeResults(
@ -322,7 +322,7 @@ export default class DataSerializer {
var rt = new DC(4);
if (Codec.isLocalResource(resource, connection)) {
rt.setUint32(0, resource.id ?? 0);
rt.setUint32(0, resource._p.instanceId ?? 0);
return new DataSerializerComposeResults(
TransmissionTypeIdentifier.ResourceLocal, rt);
} else {

View File

@ -2,15 +2,16 @@
export default class IEnum {
IEnum(index, value, name){
constructor(index, value, name, template){
this.index = index;
this.value = value;
this.name = name;
this.template = template;
}
get template () {
//return new TemplateDescriber("IEnum");
}
// get template () {
// //return new TemplateDescriber("IEnum");
// }
toString() {
return `${this.name}<${this.value}>`;

View File

@ -34,7 +34,7 @@ export const RepresentationTypeIdentifier = {
Record : 0x15,
List : 0x16,
Map : 0x17,
Enum : 0x18,
Enum : 0x44,
TypedResource : 0x45, // Followed by UUID
TypedRecord : 0x46, // Followed by UUID
TypedList : 0x48, // Followed by element type