anchor.diff:  routing_key(X) ->
       get_parameter(<<"routing-key">>, X, ?DEFAULT_RK).
   
  -get_policy(X) ->
  -    rabbit_policy:get(<<"sharding-definition">>, X).
  +exchange_bin(#resource{name = XBin}) -> XBin.
   
  -exchange_bin(#resource{name = XBin}) -> XBin.
  +make_queue_name(QBin, NodeBin, QNum) ->
  +    %% we do this to prevent unprintable characters in queue names
  +    QNumBin = list_to_binary(lists:flatten(io_lib:format("~p", [QNum]))),
  +    <<"sharding: ", QBin/binary, " - ", NodeBin/binary, " - ", QNumBin/binary>>.
  +
  +rpc_call(F, Args) ->
  +    [rpc:call(Node, rabbit_sharding_shard, F, Args) ||
  +        Node <- rabbit_mnesia:cluster_nodes(running)].
   
   a2b(A) -> list_to_binary(atom_to_list(A)).
   
  
positive.code:         undefined -> Default;
          Name      ->
              case rabbit_runtime_parameters:value(
                     vhos2t(X), Comp, Name) of
                  not_found -> Default;
                  Value     -> pget(Param, Value, Default)
              end
  
negative.code: sharded_exchanges(VHost) ->
      [X || X <- find_exchanges(VHost), shard(X)].
  
  get_policy(X) ->
      rabbit_policy:get(<<"sharding-definition">>, X).
  
  shards_per_node(X) ->
      get_parameter(<<"shards-per-node">>, X, ?DEFAULT_SHARDS_NUM).
  