Beispiel #1
0
  Status GetResources(ServerContext* /*context*/, const Empty* /*request*/, ServerWriter<Resource>* writer) override {
    const char* raw = plugin.FirstResource();
    while (!plugin.ResourcesAtEnd()) {
      Resource resource;

      resource.set_name(raw);
      resource.set_is_function(plugin.ResourceIsFunction());
      if (resource.is_function()) {
        resource.set_arg_count_min(plugin.ResourceArgCountMin());
        resource.set_arg_count_max(plugin.ResourceArgCountMax());
        resource.set_overload_count(plugin.ResourceOverloadCount());
      }
      resource.set_is_type_name(plugin.ResourceIsTypeName());
      resource.set_is_global(plugin.ResourceIsGlobal());

      for (int i = 0; i < resource.overload_count(); ++i) {
        resource.add_parameters(plugin.ResourceParameters(i));
      }

      if (!plugin.ResourcesAtEnd()) {
        resource.set_is_end(false);
        raw = plugin.NextResource();
      } else {
        resource.set_is_end(true);
      }

      writer->Write(resource);
    }

    return Status::OK;
  }