def make_target(agent, type, collective)
raise("Unknown target type #{type}") unless [:directed, :broadcast, :reply, :request, :direct_request].include?(type)
raise("Unknown collective '#{collective}' known collectives are '#{@config.collectives.join ', '}'") unless @config.collectives.include?(collective)
target = {:name => nil, :headers => {}}
case type
when :reply
target[:name] = ["/queue/" + collective, :reply, "#{Config.instance.identity}_#{$$}", Client.request_sequence].join(".")
when :broadcast
target[:name] = ["/topic/" + collective, agent, :agent].join(".")
when :request
target[:name] = ["/topic/" + collective, agent, :agent].join(".")
when :direct_request
target[:name] = ["/queue/" + collective, :nodes].join(".")
when :directed
target[:name] = ["/queue/" + collective, :nodes].join(".")
target[:headers]["selector"] = "mc_identity = '#{@config.identity}'"
target[:id] = "%s_directed_to_identity" % collective
end
target[:id] = target[:name] unless target[:id]
target
end