getTemplate method

AsyncReply<TypeTemplate?> getTemplate(
  1. Guid classId
)
Get the TypeTemplate for a given class Id. Class GUID.

Implementation

AsyncReply<TypeTemplate?> getTemplate(Guid classId) {
  if (_templates.containsKey(classId))
    return AsyncReply<TypeTemplate?>.ready(_templates[classId]);
  else if (_templateRequests.containsKey(classId))
    return _templateRequests[classId] as AsyncReply<TypeTemplate?>;

  var reply = new AsyncReply<TypeTemplate>();
  _templateRequests.add(classId, reply);

  (sendRequest(IIPPacketAction.TemplateFromClassId)..addGuid(classId)).done()
    ..then((rt) {
      if (rt != null) {
        _templateRequests.remove(classId);
        _templates[(rt[0] as TypeTemplate).classId] = rt[0] as TypeTemplate;
        Warehouse.putTemplate(rt[0] as TypeTemplate);
        reply.trigger(rt[0]);
      } else {
        reply.triggerError(Exception("Null response"));
      }
    })
    ..error((ex) {
      reply.triggerError(ex);
    });

  return reply;
}