anchor.diff:  -include("remote_file_management_pb.hrl").
   -include_lib("ctool/include/logging.hrl").
   
  +%% websocket_client's callbacks
   -export([
       init/2,
       websocket_handle/3,
  
positive.code:     connect/3
  ]).
  
  -record(ppcon_state, {msg_id = 0, connections = #{}, inbox = #{}}).
  
  %% API
  -export([ensure_running/0, get_msg_id/0, send/3]).
  
  
  ensure_running() ->
      case whereis(ppcon) of
          undefined ->
  
negative.code:                 State#ppcon_state{msg_id = CurrentMsgId + 1};
              {From, {send, HostName, MsgId, Data} = _Req} ->
                  NState1 = case maps:find(HostName, Connections) of
                                error ->
                                    case connect(HostName, 5555, [{certfile, gr_plugin:get_cert_path()}, {keyfile, gr_plugin:get_key_path()}]) of
                                        {ok, Socket} ->
                                            ?info("Connected to ~p", [HostName]),
                                            State#ppcon_state{connections = maps:put(HostName, Socket, Connections)};
                                        {error, Reason} ->
                                            ?error("Cannot connect to ~p due to ~p", [HostName, Reason]),
                                            State
                                    end;
                                {ok, _} ->
                                    State
                            end,
                  case maps:find(HostName, NState1#ppcon_state.connections) of
                      {ok, Socket1} ->
                          Socket1 ! {send, Data},
  