def __init__ (self, _session, _callback_agent, _callback_port, _coder, _t = _tracer, _e = _enforcer) :
		
		_BaseWrapper.__init__ (self, _session, _coder, _t, _e)
		
		self._callback_agent = _callback_agent if _callback_agent is not None else identifiers.generate_agent ()
		self._callback_port = _callback_port if _callback_port is not None else identifiers.generate_port ()
		self._callback_queue = identifiers.format_port_routing_key (self._callback_agent, self._callback_port, _t = _t, _e = _e)
		self._callback_server = wrappers.PortCallbackServer (self._session, self._callback_agent, self._callback_port, self._coder, self._callbacked, _t = self._t, _e = self._e)
		self._callback_records = None
		
		return
	def __init__ (self, _session, _type, _agent, _target_or_port, _coder, _t, _e) :
		
		_e and _e.enforce_is_any (_type, [_wrapper_types.target, _wrapper_types.port])
		
		_BaseWrapper.__init__ (self, _session, _coder, _t, _e)
		
		self._type = _type
		self._agent = _agent
		self._target_or_port = _target_or_port
		
		if self._type is _wrapper_types.target :
			self._server = wrappers.TargetCallbackServer (self._session, self._agent, self._target_or_port, self._coder, self._called_, _t = self._t, _e = self._e)
			
		elif self._type is _wrapper_types.port :
			self._server = wrappers.PortCallbackServer (self._session, self._agent, self._target_or_port, self._coder, self._called_, _t = self._t, _e = self._e)
			
		else :
			_e.enforcement_raise ()
		
		return