setupHooks((grapes) => {
    link = new Link({
      grape: 'http://127.0.0.1:30001'
    })
    link.start()

    peer = new PeerRPCClient(link, {})
    peer.init()

    peerSrvBuf = new PeerRPCServer(link, {
      timeout: 300000
    })

    peerSrvBuf.init()
    serviceBuf = peerSrvBuf.transport('buffered')
    serviceBuf.listen(PORT)

    link.announce('rpc_buf', serviceBuf.port, {}, (err, res) => {
      if (err) throw Error('error in announce, setup')
    })

    stop = () => {
      peer.stop()
      link.stop()
      serviceBuf.stop()
    }
  })
  setupHooks((grapes) => {
    link = new Link({
      grape: 'http://127.0.0.1:30001'
    })
    link.start()

    peer = new PeerRPCClient(link, {})
    peer.init()

    peerSrvStr = new PeerRPCServer(link, {
      timeout: 300000,
      disableBuffered: true
    })

    peerSrvStr.init()
    serviceStr = peerSrvStr.transport('stream')
    serviceStr.listen(PORT)

    link.announce('rpc_manual', serviceStr.port, {}, (err, res) => {
      if (err) throw Error('error in announce, setup')
    })

    stop = () => {
      peer.stop()
      link.stop()
      serviceStr.stop()
    }
  })
// make sure you start 2 grapes
// grape --dp 20001 --aph 30001 --bn '127.0.0.1:20002'
// grape --dp 20002 --aph 40001 --bn '127.0.0.1:20001'

'use strict'

const Grenache = require('./../')
const Link = require('grenache-nodejs-link')
const PeerPub = Grenache.PeerPub

const _ = require('lodash')

const link = new Link({
  grape: 'http://127.0.0.1:30001'
})
link.start()

const peer = new PeerPub(link, {})
peer.init()

const service = peer.transport('server')
service.listen(_.random(1000) + 1024)

setInterval(function () {
  link.announce('pub_test', service.port, {})
}, 1000)

setInterval(() => {
  service.pub('world')
}, 100)