constructor(broker, endpoint) {
		this.broker = broker;
		if (this.broker) {
			this.nodeID = this.broker.nodeID;
			this.id = this.broker.generateUid();
		} else {
			this.nodeID = null;
		}

		if (endpoint) {
			this.setEndpoint(endpoint);
		} else {
			this.endpoint = null;
			this.service = null;
			this.action = null;
			this.event = null;
		}

		// The emitted event "user.created" because `ctx.event.name` can be "user.**"
		this.eventName = null;
		// Type of event ("emit" or "broadcast")
		this.eventType = null;
		// The groups of event
		this.eventGroups = null;

		this.options = {
			timeout: null,
			retries: null
		};

		this.parentID = null;
		this.caller = null;

		this.level = 1;

		this.params = null;
		this.meta = {};
		this.locals = {};

		this.requestID = this.id;

		this.tracing = null;
		this.span = null;
		this._spanStack = [];

		this.needAck = null;
		this.ackID = null;

		//this.startTime = null;
		//his.startHrTime = null;
		//this.stopTime = null;
		//this.duration = null;

		//this.error = null;
		this.cachedResult = false;
	}
Creates an instance of Context.

@param {ServiceBroker} broker - Broker instance
@param {Endpoint} endpoint

@memberof Context