mirror of
https://github.com/esiur/esiur-js.git
synced 2026-04-03 21:48:21 +00:00
1.7.2
This commit is contained in:
@@ -32,6 +32,8 @@ import TemplateDataType from "./TemplateDataType.js";
|
||||
import IResource from '../IResource.js';
|
||||
import IRecord from '../../Data/IRecord.js';
|
||||
import TemplateType from './TemplateType.js'
|
||||
import Warehouse from '../Warehouse.js';
|
||||
import DistributedConnection from '../../Net/IIP/DistributedConnection.js';
|
||||
|
||||
export default class TypeTemplate {
|
||||
|
||||
@@ -95,13 +97,13 @@ export default class TypeTemplate {
|
||||
|
||||
|
||||
static getTypeGuid(type) {
|
||||
return getTypeGuidByName(type.template.namespace + "." + type.prototype.constructor.name);
|
||||
return this.getTypeGuidByName(type.template.namespace + "." + type.prototype.constructor.name);
|
||||
}
|
||||
|
||||
static getTypeGuidByName(typeName)
|
||||
{
|
||||
return SHA256.compute(DC.stringToBytes(this.className)).getGuid(0);
|
||||
}
|
||||
return SHA256.compute(DC.stringToBytes(typeName)).getGuid(0);
|
||||
}
|
||||
|
||||
|
||||
static getDependencies(template)
|
||||
@@ -119,11 +121,11 @@ export default class TypeTemplate {
|
||||
return;
|
||||
|
||||
// functions
|
||||
for(var i = 0; i < tmp.functions.length; i++)
|
||||
for(let i = 0; i < tmp.functions.length; i++)
|
||||
{
|
||||
f = tmp.functions[i];
|
||||
let ft = tmp.functions[i];
|
||||
|
||||
var frtt = Warehouse.getTemplateByType(f.methodInfo.returnType);
|
||||
var frtt = Warehouse.getTemplateByType(ft.methodInfo.returnType);
|
||||
if (frtt != null)
|
||||
{
|
||||
if (!bag.includes(frtt))
|
||||
@@ -133,11 +135,11 @@ export default class TypeTemplate {
|
||||
}
|
||||
}
|
||||
|
||||
var args = f.methodInfo.parameters;
|
||||
var args = ft.methodInfo.parameters;
|
||||
|
||||
for(var i = 0; i < args.length - 1; i++)
|
||||
for(let j = 0; j < args.length - 1; j++)
|
||||
{
|
||||
var fpt = Warehouse.getTemplateByType(args[i].parameterType);
|
||||
var fpt = Warehouse.getTemplateByType(args[j].parameterType);
|
||||
if (fpt != null)
|
||||
{
|
||||
if (!bag.includes(fpt))
|
||||
@@ -154,7 +156,7 @@ export default class TypeTemplate {
|
||||
var last = args[args.length - 1];
|
||||
if (last.parameterType == DistributedConnection)
|
||||
{
|
||||
var fpt = Warehouse.getTemplateByType(last.parameterType);
|
||||
let fpt = Warehouse.getTemplateByType(last.parameterType);
|
||||
if (fpt != null)
|
||||
{
|
||||
if (!bag.includes(fpt))
|
||||
@@ -169,7 +171,7 @@ export default class TypeTemplate {
|
||||
}
|
||||
|
||||
// properties
|
||||
for (var i = 0; i < tmp.properties.length; i++)
|
||||
for (let i = 0; i < tmp.properties.length; i++)
|
||||
{
|
||||
var p = tmp.properties[i];
|
||||
var pt = Warehouse.getTemplateByType(p.propertyInfo.propertyType);
|
||||
@@ -184,7 +186,7 @@ export default class TypeTemplate {
|
||||
}
|
||||
|
||||
// events
|
||||
for(var i = 0; i < tmp.events.length; i++)
|
||||
for(let i = 0; i < tmp.events.length; i++)
|
||||
{
|
||||
var e = tmp.events[i];
|
||||
var et = Warehouse.getTemplateByType(e.eventInfo.eventHandlerType);
|
||||
@@ -204,6 +206,10 @@ export default class TypeTemplate {
|
||||
return list;
|
||||
}
|
||||
|
||||
get type() {
|
||||
return this.templateType;
|
||||
}
|
||||
|
||||
constructor(type, addToWarehouse) {
|
||||
|
||||
|
||||
@@ -257,7 +263,7 @@ export default class TypeTemplate {
|
||||
|
||||
if (template.events != null)
|
||||
{
|
||||
for (var i = 0; i < template.events.length; i++) {
|
||||
for (let i = 0; i < template.events.length; i++) {
|
||||
|
||||
// [name, type, {listenable: true/false, help: ""}]
|
||||
var ei = template.events[i];
|
||||
@@ -274,7 +280,7 @@ export default class TypeTemplate {
|
||||
|
||||
if (template.functions != null)
|
||||
{
|
||||
for (var i = 0; i < template.functions.length; i++) {
|
||||
for (let i = 0; i < template.functions.length; i++) {
|
||||
|
||||
var fi = template.functions[i];
|
||||
|
||||
@@ -298,13 +304,13 @@ export default class TypeTemplate {
|
||||
|
||||
|
||||
// append signals
|
||||
for (var i = 0; i < this.events.length; i++)
|
||||
for (let i = 0; i < this.events.length; i++)
|
||||
this.members.push(this.events[i]);
|
||||
// append slots
|
||||
for (var i = 0; i < this.functions.length; i++)
|
||||
for (let i = 0; i < this.functions.length; i++)
|
||||
this.members.push(this.functions[i]);
|
||||
// append properties
|
||||
for (var i = 0; i < this.properties.length; i++)
|
||||
for (let i = 0; i < this.properties.length; i++)
|
||||
this.members.push(this.properties[i]);
|
||||
|
||||
// bake it binarily
|
||||
@@ -317,13 +323,13 @@ export default class TypeTemplate {
|
||||
.addUint32(template.version)
|
||||
.addUint16(this.members.length);
|
||||
|
||||
for (var i = 0; i < this.functions.length; i++)
|
||||
for (let i = 0; i < this.functions.length; i++)
|
||||
b.addUint8Array(this.functions[i].compose());
|
||||
|
||||
for (var i = 0; i < this.properties.length; i++)
|
||||
for (let i = 0; i < this.properties.length; i++)
|
||||
b.addUint8Array(this.properties[i].compose());
|
||||
|
||||
for (var i = 0; i < this.events.length; i++)
|
||||
for (let i = 0; i < this.events.length; i++)
|
||||
b.addUint8Array(this.events[i].compose());
|
||||
|
||||
this.content = b.toArray();
|
||||
@@ -331,7 +337,8 @@ export default class TypeTemplate {
|
||||
|
||||
static getFunctionParameters(func)
|
||||
{
|
||||
var STRIP_COMMENTS = /(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,\)]*(('(?:\\'|[^'\r\n])*')|("(?:\\"|[^"\r\n])*"))|(\s*=[^,\)]*))/mg;
|
||||
var STRIP_COMMENTS = /(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,)]*(('(?:\\'|[^'\r\n])*')|("(?:\\"|[^"\r\n])*"))|(\s*=[^,)]*))/mg;
|
||||
//var STRIP_COMMENTS = /(\/\/.*$)|(\/\*[\s\S]*?\*\/)|(\s*=[^,\)]*(('(?:\\'|[^'\r\n])*')|("(?:\\"|[^"\r\n])*"))|(\s*=[^,\)]*))/mg;
|
||||
var ARGUMENT_NAMES = /([^\s,]+)/g;
|
||||
|
||||
var fnStr = func.toString().replace(STRIP_COMMENTS, '');
|
||||
@@ -354,9 +361,8 @@ export default class TypeTemplate {
|
||||
if (contentLength == -1)
|
||||
contentLength = data.length;
|
||||
|
||||
var ends = offset + contentLength;
|
||||
|
||||
var oOffset = offset;
|
||||
//var ends = offset + contentLength;
|
||||
//var oOffset = offset;
|
||||
|
||||
// start parsing...
|
||||
|
||||
@@ -385,16 +391,16 @@ export default class TypeTemplate {
|
||||
|
||||
if (type == 0) // function
|
||||
{
|
||||
var ft = new FunctionTemplate();
|
||||
let ft = new FunctionTemplate();
|
||||
ft.index = functionIndex++;
|
||||
var hasExpansion = ((data.getUint8(offset++) & 0x10) == 0x10);
|
||||
let hasExpansion = ((data.getUint8(offset++) & 0x10) == 0x10);
|
||||
|
||||
var len = data.getUint8(offset++);
|
||||
let len = data.getUint8(offset++);
|
||||
ft.name = data.getString(offset, len);
|
||||
offset += len;
|
||||
|
||||
// return type
|
||||
var {size, value: returnType} = TemplateDataType.parse(data, offset);
|
||||
let {size, value: returnType} = TemplateDataType.parse(data, offset);
|
||||
offset += size;
|
||||
|
||||
ft.returnType = returnType;
|
||||
@@ -405,9 +411,9 @@ export default class TypeTemplate {
|
||||
|
||||
for (var a = 0; a < argsCount; a++)
|
||||
{
|
||||
var {size, value: argType} = ArgumentTemplate.parse(data, offset);
|
||||
let {size: argSize, value: argType} = ArgumentTemplate.parse(data, offset);
|
||||
args.push(argType);
|
||||
offset += size;
|
||||
offset += argSize;
|
||||
}
|
||||
|
||||
ft.arguments = args;
|
||||
@@ -425,17 +431,17 @@ export default class TypeTemplate {
|
||||
else if (type == 1) // property
|
||||
{
|
||||
|
||||
var pt = new PropertyTemplate();
|
||||
let pt = new PropertyTemplate();
|
||||
pt.index = propertyIndex++;
|
||||
var hasReadExpansion = ((data.getUint8(offset) & 0x8) == 0x8);
|
||||
var hasWriteExpansion = ((data.getUint8(offset) & 0x10) == 0x10);
|
||||
let hasReadExpansion = ((data.getUint8(offset) & 0x8) == 0x8);
|
||||
let hasWriteExpansion = ((data.getUint8(offset) & 0x10) == 0x10);
|
||||
pt.recordable = ((data.getUint8(offset) & 1) == 1);
|
||||
pt.permission = ((data.getUint8(offset++) >> 1) & 0x3);
|
||||
var len = data.getUint8(offset++);
|
||||
let len = data.getUint8(offset++);
|
||||
pt.name = data.getString(offset, len);
|
||||
offset += len;
|
||||
|
||||
var {size, value: valueType} = TemplateDataType.parse(data, offset);
|
||||
let {size, value: valueType} = TemplateDataType.parse(data, offset);
|
||||
|
||||
offset += size;
|
||||
|
||||
@@ -443,7 +449,7 @@ export default class TypeTemplate {
|
||||
|
||||
if (hasReadExpansion) // expansion ?
|
||||
{
|
||||
var cs = data.getUint32(offset);
|
||||
let cs = data.getUint32(offset);
|
||||
offset += 4;
|
||||
pt.readExpansion = data.getString(offset, cs);
|
||||
offset += cs;
|
||||
@@ -451,7 +457,7 @@ export default class TypeTemplate {
|
||||
|
||||
if (hasWriteExpansion) // expansion ?
|
||||
{
|
||||
var cs = data.getUint32(offset);
|
||||
let cs = data.getUint32(offset);
|
||||
offset += 4;
|
||||
pt.writeExpansion = data.getString(offset, cs);
|
||||
offset += cs;
|
||||
@@ -461,23 +467,23 @@ export default class TypeTemplate {
|
||||
}
|
||||
else if (type == 2) // Event
|
||||
{
|
||||
var et = new EventTemplate();
|
||||
let et = new EventTemplate();
|
||||
et.index = eventIndex++;
|
||||
var hasExpansion = ((data.getUint8(offset) & 0x10) == 0x10);
|
||||
let hasExpansion = ((data.getUint8(offset) & 0x10) == 0x10);
|
||||
et.listenable = ((data.getUint8(offset++) & 0x8) == 0x8);
|
||||
var len = data.getUint8(offset++);
|
||||
let len = data.getUint8(offset++);
|
||||
et.name = data.getString(offset, len);
|
||||
|
||||
offset += len;
|
||||
|
||||
var {size, value: argType} = TemplateDataType.parse(data, offset);
|
||||
let {size, value: argType} = TemplateDataType.parse(data, offset);
|
||||
|
||||
offset += size;
|
||||
et.argumentType = argType;
|
||||
|
||||
if (hasExpansion) // expansion ?
|
||||
{
|
||||
var cs = data.getUint32(offset);
|
||||
let cs = data.getUint32(offset);
|
||||
offset += 4;
|
||||
et.expansion = data.getString(offset, cs);
|
||||
offset += cs;
|
||||
@@ -489,13 +495,13 @@ export default class TypeTemplate {
|
||||
}
|
||||
|
||||
// append signals
|
||||
for (var i = 0; i < od.events.length; i++)
|
||||
for (let i = 0; i < od.events.length; i++)
|
||||
od.members.push(od.events[i]);
|
||||
// append slots
|
||||
for (var i = 0; i < od.functions.length; i++)
|
||||
for (let i = 0; i < od.functions.length; i++)
|
||||
od.members.push(od.functions[i]);
|
||||
// append properties
|
||||
for (var i = 0; i < od.properties.length; i++)
|
||||
for (let i = 0; i < od.properties.length; i++)
|
||||
od.members.push(od.properties[i]);
|
||||
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@ import ResourceProxy from '../Proxy/ResourceProxy.js';
|
||||
import AsyncBag from '../Core/AsyncBag.js';
|
||||
import IRecord from '../Data/IRecord.js';
|
||||
import TemplateType from './Template/TemplateType.js';
|
||||
import DistributedResource from '../Net/IIP/DistributedResource.js';
|
||||
|
||||
export class WH extends IEventHandler
|
||||
{
|
||||
@@ -62,7 +63,9 @@ export class WH extends IEventHandler
|
||||
this._register("connected");
|
||||
this._register("disconnected");
|
||||
///this._urlRegex = /^(?:([\S]*):\/\/([^\/]*)\/?)/;
|
||||
this._urlRegex = /^(?:([^\s|:]*):\/\/([^\/]*)\/?)/;
|
||||
// this._urlRegex = /^(?:([^\s|:]*):\/\/([^\/]*)\/?)/;
|
||||
this._urlRegex = /^(?:([^\s|:]*):\/\/([^/]*)\/?)/;
|
||||
|
||||
}
|
||||
|
||||
newInstance(type, properties)
|
||||
@@ -80,6 +83,9 @@ export class WH extends IEventHandler
|
||||
|
||||
var res = new proxyType();
|
||||
|
||||
if (properties != null)
|
||||
Object.assign(res, properties);
|
||||
|
||||
if (properties != null)
|
||||
Object.assign(res, properties);
|
||||
|
||||
@@ -88,7 +94,7 @@ export class WH extends IEventHandler
|
||||
var rt = new AsyncReply();
|
||||
|
||||
this.put(name, res, store, parent, null, 0, manager, attributes)
|
||||
.then((ok)=>rt.trigger(res))
|
||||
.then(()=>rt.trigger(res))
|
||||
.error((ex)=>rt.triggerError(ex));
|
||||
|
||||
return rt;
|
||||
@@ -104,10 +110,10 @@ export class WH extends IEventHandler
|
||||
return new AsyncReply(this.resources.item(id));
|
||||
}
|
||||
|
||||
get(path, attributes = null, parent = null, manager = null)
|
||||
get(path, attributes = null)//, parent = null, manager = null)
|
||||
{
|
||||
var rt = new AsyncReply();
|
||||
var self = this;
|
||||
// var self = this;
|
||||
|
||||
// Should we create a new store ?
|
||||
if (path.match(this._urlRegex))
|
||||
@@ -134,7 +140,7 @@ export class WH extends IEventHandler
|
||||
{
|
||||
if (!this.warehouseIsOpen)
|
||||
{
|
||||
this.open().then((ok)=>{
|
||||
this.open().then(()=>{
|
||||
initResource();
|
||||
}).error(ex=>rt.triggerError(ex));
|
||||
}
|
||||
@@ -186,7 +192,7 @@ export class WH extends IEventHandler
|
||||
}
|
||||
|
||||
if (toBeRemoved != null)
|
||||
for(var i = 0; i < toBeRemoved.length; i++)
|
||||
for(let i = 0; i < toBeRemoved.length; i++)
|
||||
this.remove(toBeRemoved[i]);
|
||||
|
||||
this._emit("disconnected", resource);
|
||||
@@ -231,9 +237,9 @@ export class WH extends IEventHandler
|
||||
|
||||
if (self.warehouseIsOpen)
|
||||
{
|
||||
resource.trigger(ResourceTrigger.Initialize).then(x=>{
|
||||
resource.trigger(ResourceTrigger.Initialize).then(()=>{
|
||||
if (resource instanceof IStore)
|
||||
resource.trigger(ResourceTrigger.Open).then(y=>{ rt.trigger(true);
|
||||
resource.trigger(ResourceTrigger.Open).then(()=>{ rt.trigger(true);
|
||||
self._emit("connected", resource)
|
||||
}).error(ex => {
|
||||
Warehouse.remove(resource);
|
||||
@@ -261,7 +267,7 @@ export class WH extends IEventHandler
|
||||
initResource();
|
||||
}
|
||||
else
|
||||
store.put(resource).then(ok=>{
|
||||
store.put(resource).then(()=>{
|
||||
initResource();
|
||||
}).error(ex=> {
|
||||
// failed to put
|
||||
@@ -347,21 +353,21 @@ export class WH extends IEventHandler
|
||||
if (templateType == TemplateType.Unspecified)
|
||||
{
|
||||
// look in resources
|
||||
var template = templates.get(TemplateType.Resource).get(classId);
|
||||
var template = this.templates.get(TemplateType.Resource).get(classId);
|
||||
if (template != null)
|
||||
return template;
|
||||
|
||||
// look in records
|
||||
template = templates.get(TemplateType.Record).get(classId);
|
||||
template = this.templates.get(TemplateType.Record).get(classId);
|
||||
if (template != null)
|
||||
return template;
|
||||
|
||||
// look in wrappers
|
||||
template = templates.get(TemplateType.Wrapper).get(classId);
|
||||
template = this.templates.get(TemplateType.Wrapper).get(classId);
|
||||
return template;
|
||||
}
|
||||
else
|
||||
return templates.get(templateType).get(classId);
|
||||
return this.templates.get(templateType).get(classId);
|
||||
}
|
||||
|
||||
getTemplateByClassName(className, templateType = TemplateType.Unspecified)
|
||||
@@ -369,22 +375,22 @@ export class WH extends IEventHandler
|
||||
if (templateType == TemplateType.Unspecified)
|
||||
{
|
||||
// look in resources
|
||||
var template = templates[TemplateType.Resource].values.find(x => x.className == className);
|
||||
var template = this.templates.get(TemplateType.Resource).values.find(x => x.className == className);
|
||||
if (template != null)
|
||||
return template;
|
||||
|
||||
// look in records
|
||||
template = templates[TemplateType.Record].values.find(x => x.className == className);
|
||||
template = this.templates.get(TemplateType.Record).values.find(x => x.className == className);
|
||||
if (template != null)
|
||||
return template;
|
||||
|
||||
// look in wrappers
|
||||
template = templates[TemplateType.Wrapper].values.find(x => x.className == className);
|
||||
template = this.templates.get(TemplateType.Wrapper).values.find(x => x.className == className);
|
||||
return template;
|
||||
}
|
||||
else
|
||||
{
|
||||
return templates[templateType].values.find(x => x.className == className);
|
||||
return this.templates.get(templateType).values.find(x => x.className == className);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -395,15 +401,15 @@ export class WH extends IEventHandler
|
||||
if (index == path.length - 1)
|
||||
{
|
||||
if (path[index] == "")
|
||||
for(var i = 0; i < resources.length; i++)
|
||||
for(let i = 0; i < resources.length; i++)
|
||||
rt.push(resources.at(i));
|
||||
else
|
||||
for(var i = 0; i < resources.length; i++)
|
||||
for(let i = 0; i < resources.length; i++)
|
||||
if (resources.at(i).instance.name == path[index])
|
||||
rt.push(resources.at(i));
|
||||
}
|
||||
else
|
||||
for(var i = 0; i < resources.length; i++)
|
||||
for(let i = 0; i < resources.length; i++)
|
||||
if (resources.at(i).instance.name == path[index])
|
||||
rt = rt.concat(this._qureyIn(path, index+1, resources.at(i).instance.children));
|
||||
|
||||
@@ -488,13 +494,13 @@ export class WH extends IEventHandler
|
||||
|
||||
initBag.then(ar => {
|
||||
|
||||
for(var i = 0; i < ar.length; i++)
|
||||
for(let i = 0; i < ar.length; i++)
|
||||
if (!ar[i])
|
||||
console.log(`Resource failed at Initialize ${self.resources.at(i).instance.name} [${self.resources.at(i).instance.template.className}]`);
|
||||
|
||||
var sysBag = new AsyncBag();
|
||||
|
||||
for (var i = 0; i < this.resources.length; i++)
|
||||
for (let i = 0; i < this.resources.length; i++)
|
||||
{
|
||||
var r = this.resources.at(i);
|
||||
sysBag.add(r.trigger(ResourceTrigger.SystemInitialized));
|
||||
|
||||
Reference in New Issue
Block a user