gw has not been initialized; it was basically an empty string and only
got populated by Sprintf-ing the addr:port IF the port has been set.
This commit sets the gw to node.Address to it's never an empty string.
`config.NewConfig()` with consul source will both read from consul
and watch consul for changes. Hence, the `prefix` is used in these
2 cases:
- read case: it is used to strip path based on the `KVPair` returned
from consul `kv.List()` method
- watch case: it is used as the `key` of watch query (`keyprefix` type)
So for *watch case*, the `key` is leagal to be `/` for watching change
on root. While for *read case*, because `KVPair.Key` is always stripped
off the leading slash, so if user specified some `prefix` with leading
slash, we should strip it also.
An extream case would be: user want's to read & watch node in root dir.
One would specify `prefix` as `/`, and it should work then.
Check whetehr the 1st level encoded json is array or not, to
support 1st level array in consul config.
During debug, i suspected the incapability of arrray is caused by
json reader, so i added test for array. I think it makes no harm
to also check that in.
Debug logs that were helpful when squashing bugs have been removed.
advertiseToNetwork replaced the watchTable which originally watched the
routing table entries. We now take a different approach to propagating
the local registry services into the network registry.
Remove has been renamed to Delete to be more in line with the framework.
A bunch of comments have been added/updated for the future generations
We have increased the Network Registry TTL to 2 minutes.
Added ID function to router interface.
Network registry addresses are deregistered when the router is stopped.
Query has been updated to search for particular GW in lookups.