registerServices(node, serviceList) {
		serviceList.forEach(svc => {
			if (!svc.fullName)
				svc.fullName = this.broker.ServiceFactory.getVersionedFullName(
					svc.name,
					svc.version
				);

			let prevActions, prevEvents;
			let service = this.services.get(svc.fullName, node.id);
			if (!service) {
				service = this.services.add(node, svc, false);
			} else {
				prevActions = Object.assign({}, service.actions);
				prevEvents = Object.assign({}, service.events);
				service.update(svc);
			}

			//Register actions
			if (svc.actions) {
				this.registerActions(node, service, svc.actions);
			}

			// remove old actions which is not exist
			if (prevActions) {
				_.forIn(prevActions, (action, name) => {
					if (!svc.actions || !svc.actions[name]) {
						this.unregisterAction(node, name);
					}
				});
			}

			//Register events
			if (svc.events) {
				this.registerEvents(node, service, svc.events);
			}

			// remove old events which is not exist
			if (prevEvents) {
				_.forIn(prevEvents, (event, name) => {
					if (!svc.events || !svc.events[name]) {
						this.unregisterEvent(node, name);
					}
				});
			}
		});

		// remove old services which is not exist in new serviceList
		// Please note! At first, copy the array because you can't remove items inside forEach
		const prevServices = Array.from(this.services.services);
		prevServices.forEach(service => {
			if (service.node != node) return;

			let exist = false;
			serviceList.forEach(svc => {
				if (service.equals(svc.fullName)) exist = true;
			});

			// This service is removed on remote node!
			if (!exist) {
				this.unregisterService(service.fullName, node.id);
			}
		});

		this.broker.servicesChanged(false);
		this.updateMetrics();
	}
Register remote services

@param {Nodeany} node
@param {Array} serviceList
@memberof Registry