package ignitetest;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;

import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCompute;
import org.apache.ignite.IgniteQueue;
import org.apache.ignite.Ignition;
import org.apache.ignite.configuration.CollectionConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;

public class Test
{
  public static void main(String[] args)
  {
    final IgniteConfiguration cfg = new IgniteConfiguration();
    cfg.setPeerClassLoadingEnabled(true);
    try (final Ignite ignite = Ignition.start(cfg))
    {
      final IgniteQueue<Task> queue = ignite.queue("myTaskQueue", 0, new CollectionConfiguration());
      queue.clear();
      queue.addAll(Collections.nCopies(100, new Task()));

      final IgniteCompute compute = ignite.compute();
      final Collection<Collection<String>> res = compute.broadcast(() -> {
        final IgniteQueue<Task> q = Ignition.ignite().queue("myTaskQueue", 0, null);
        final Collection<String> results = new ArrayList<>();
        for (Task task; (task = q.poll()) != null;)
        {
          results.add(task.call());
        }
        return results;
      });

      System.out.println(res);
    }
  }
}
