%% Copyright 2010, 2011, 2012 Tony Garnock-Jones . %% %% This file is part of Hop. %% %% Hop is free software: you can redistribute it and/or modify it %% under the terms of the GNU General Public License as published by %% the Free Software Foundation, either version 3 of the License, or %% (at your option) any later version. %% %% Hop is distributed in the hope that it will be useful, but WITHOUT %% ANY WARRANTY; without even the implied warranty of MERCHANTABILITY %% or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public %% License for more details. %% %% You should have received a copy of the GNU General Public License %% along with Hop. If not, see . -module(hop). -export([register_idempotent/3, class_of/1, send/2, post/4]). register_idempotent(Name, Pid, ClassModule) -> case global:register_name(Name, Pid) of yes -> ok; no -> case class_of(Name) of undefined -> register_idempotent(Name, Pid, ClassModule); ClassModule -> ok; _ -> {error, <<"class-mismatch">>} end end. class_of(Name) -> case global:whereis_name(Name) of undefined -> undefined; Pid -> gen_server:call(Pid, hop_class_module) end. send(<<>>, _Body) -> ok; send(Name, Body) -> case global:whereis_name(Name) of undefined -> error_logger:warning_report({?MODULE, send, undefined_name, Name}), false; Pid -> Pid ! {hop, Body}, true end. post(Sink, Name, Body, Token) -> send(Sink, [<<"post">>, Name, Body, Token]).