/*
 * Implements a veyron client that talks to the namespace service and finds all
 * the P2B services that are available.
 * @fileoverview
 */
import { Logger } from 'libs/logs/logger'
import { config } from 'config/config'

var log = new Logger('services/p2b-namespace');
var veyron = new Veyron(config.veyron);
var client = veyron.newClient();

/*
 * Finds all the P2B services that are published by querying the namespace.
 * @return {Promise} Promise resolving to an array of names for all published
 * P2B services
 */
export function getAll() {
  return client.bindTo(config.namespaceRoot).then((namespace) => {
    var globResult = namespace.glob('google/p2b/*');
    var p2bServices = [];
    globResult.stream.on('data', (p2bServiceName) => {
      p2bServices.push(p2bServiceName.name);
    });

    // wait until all the data arrives then return the collection
    return globResult.then(() => {
      return p2bServices;
    });
  });
}
