% Copyright (c) 2016, Yuce Tekol . % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions are % met: % % * Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % % * Redistributions in binary form must reproduce the above copyright % notice, this list of conditions and the following disclaimer in the % documentation and/or other materials provided with the distribution. % % * The names of its contributors may not be used to endorse or promote % products derived from this software without specific prior written % permission. % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS % "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT % LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR % A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT % OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, % SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT % LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, % DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY % THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT % (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE % OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -module(proxy@teacup). -behaviour(teacup_server). -export([teacup@signature/1, teacup@init/1, teacup@status/2, teacup@data/2, teacup@error/2]). -define(MSG, ?MODULE). teacup@signature(#{signature := Signature}) -> {ok, Signature}; teacup@signature(_) -> ok. teacup@init(Opts) -> {ok, Opts}. teacup@status(Status, State) -> notify_parent({teacup@status, Status}, State), {noreply, State}. teacup@data(Data, State) -> notify_parent({teacup@data, Data}, State), {noreply, State}. teacup@error(Reason, State) -> notify_parent({teacup@error, Reason}, State), {stop, Reason, State}. notify_parent(Message, #{parent@ := Parent, ref@ := Ref}) -> Parent ! {Ref, Message}.