iipRequestAttachResource method
void
iipRequestAttachResource(
- int callback,
- int resourceId
)
Implementation
void iipRequestAttachResource(int callback, int resourceId) {
Warehouse.getById(resourceId).then((r) {
if (r != null) {
if (r.instance
?.applicable(_session as Session, ActionType.Attach, null) ==
Ruling.Denied) {
_sendError(ErrorType.Management, callback, 6);
return;
}
_unsubscribe(r);
var link = DC.stringToBytes(r.instance?.link ?? "");
if (r is DistributedResource) {
// reply ok
_sendReply(IIPPacketAction.AttachResource, callback)
..addGuid(r.instance?.template.classId as Guid)
..addUint64(r.instance?.age as int)
..addUint16(link.length)
..addDC(link)
//..addDC(Codec.composePropertyValueArray(
// r.internal_serialize(), this, true))
..addDC(Codec.compose(
(r as DistributedResource).internal_serialize(), this))
..done();
} else {
// reply ok
_sendReply(IIPPacketAction.AttachResource, callback)
..addGuid((r.instance as Instance).template.classId)
..addUint64((r.instance as Instance).age)
..addUint16(link.length)
..addDC(link)
..addDC(Codec.compose((r.instance as Instance).serialize(), this))
..done();
}
_subscribe(r);
//r.instance.children.on("add", _children_OnAdd);
//r.instance.children.on("removed", _children_OnRemoved);
//r.instance.attributes.on("modified", _attributes_OnModified);
} else {
// reply failed
//SendParams(0x80, r.instance.id, r.instance.Age, r.instance.serialize(false, this));
_sendError(ErrorType.Management, callback,
ExceptionCode.ResourceNotFound.index);
}
});
}