2
0
mirror of https://github.com/esiur/esiur-js.git synced 2026-04-03 21:48:21 +00:00
This commit is contained in:
2021-03-10 01:25:20 +03:00
parent ca2b89540a
commit a08519bde8
55 changed files with 4190 additions and 6679 deletions

View File

@@ -28,10 +28,10 @@
export default class CustomResourceEvent
{
constructor(issuer, receivers, params)
constructor(issuer, receivers, args)
{
this.issuer = issuer;
this.receivers = receivers;
this.params = params;
this.args = args;
}
}

View File

@@ -234,7 +234,7 @@ export default class Instance extends IEventHandler
return function(args)
{
if (args instanceof CustomResourceEvent)
self._emitResourceEvent(args.issuer, args.receivers, name, args.params);
self._emitResourceEvent(args.issuer, args.receivers, name, args.args);
else
self._emitResourceEvent(null, null, name, args);
};

View File

@@ -46,7 +46,7 @@ export default class EventTemplate extends MemberTemplate
var name = super.compose();
if (this.expansion != null) {
var exp = DC.stringToBytes(this.expansion);
return rt.addUint8(0x50)
return rt.addUint8(this.listenable ? 0x58 : 0x50)
.addUint8(name.length)
.addUint8Array(name)
.addUint32(exp.length)
@@ -54,7 +54,7 @@ export default class EventTemplate extends MemberTemplate
.toArray();
}
else
return rt.addUint8(0x40)
return rt.addUint8(this.listenable ? 0x48 : 0x40)
.addUint8(name.length)
.addUint8Array(name)
.toArray();

View File

@@ -123,6 +123,7 @@ export default class ResourceTemplate {
et.name = template.events[i].name;
et.index = i;
et.expansion = template.events[i].help;
et.listenable = template.events[i].listenable;
this.events.push(et);
}
@@ -266,9 +267,11 @@ export default class ResourceTemplate {
{
var et = new EventTemplate();
et.index = eventIndex++;
var expansion = ((data.getUint8(offset++) & 0x10) == 0x10);
var expansion = ((data.getUint8(offset) & 0x10) == 0x10);
et.listenable = ((data.getUint8(offset++) & 0x8) == 0x8);
var len = data.getUint8(offset++);
et.name = data.getString(offset, len);
offset += len;
if (expansion) // expansion ?

View File

@@ -58,22 +58,38 @@ export class WH extends IEventHandler
this._urlRegex = /^(?:([^\s|:]*):\/\/([^\/]*)\/?)/;
}
newInstance(type, properties)
{
var proxyType = ResourceProxy.getProxy(type);
var res = new proxyType();
if (properties != null)
Object.assign(res, properties);
return type;
}
new(type, name, store = null, parent = null, manager = null, attributes = null, properties = null)
{
var proxyType = ResourceProxy.getProxy(type);
var rt = new AsyncReply();
var res = new proxyType();
if (properties != null)
Object.assign(res, properties);
this.put(res, name, store, parent, null, 0, manager, attributes)
.then((ok)=>rt.trigger(res))
.error((ex)=>rt.triggerError(ex));
if (store != null || parent != null || res instanceof IStore)
{
var rt = new AsyncReply();
return rt;
this.put(res, name, store, parent, null, 0, manager, attributes)
.then((ok)=>rt.trigger(res))
.error((ex)=>rt.triggerError(ex));
return rt;
}
else
{
return new AsyncReply(res);
}
}
getById(id)
@@ -103,7 +119,6 @@ export class WH extends IEventHandler
else
rt.triggerError(store);
}).error(ex=>{
Warehouse.remove(resource);
rt.triggerError(ex);
});
}
@@ -176,7 +191,7 @@ export class WH extends IEventHandler
}
put(resource, name, store, parent, customTemplate = null, age = 0, manager = null, attributes = null){
var rt = new AsyncReply();
resource.instance = new Instance(this.resourceCounter++, name, resource, store, customTemplate, age);
@@ -202,6 +217,7 @@ export class WH extends IEventHandler
let self = this;
const initResource = ()=>{
self.resources.add(resource.instance.id, resource);
if (self.warehouseIsOpen)
@@ -210,16 +226,22 @@ export class WH extends IEventHandler
if (resource instanceof IStore)
resource.trigger(ResourceTrigger.Open).then(y=>{ rt.trigger(true);
self._emit("connected", resource)
}).error(ex => rt.triggerError(ex));
}).error(ex => {
Warehouse.remove(resource);
rt.triggerError(ex)
});
else
rt.trigger(true);
}).error(ex=>rt.triggerError(ex));
}).error(ex => {
Warehouse.remove(resource);
rt.triggerError(ex)
});
}
else
{
if (resource instanceof IStore)
self._emit("connected", resource);
if (resource instanceof IStore)
self._emit("connected", resource);
rt.trigger(true);
}
}
@@ -232,7 +254,11 @@ export class WH extends IEventHandler
else
store.put(resource).then(ok=>{
initResource();
}).error(ex=>rt.triggerError(ex));
}).error(ex=> {
// failed to put
Warehouse.remove(resource);
rt.triggerError(ex);
});
return rt;
}
@@ -268,8 +294,7 @@ export class WH extends IEventHandler
getTemplateByType(type)
{
//debugger;
let className = type.prototype.constructor.name;
if (className.startsWith("E_"))