1%% 2%% %CopyrightBegin% 3%% 4%% Copyright Ericsson AB 2006-2016. All Rights Reserved. 5%% 6%% Licensed under the Apache License, Version 2.0 (the "License"); 7%% you may not use this file except in compliance with the License. 8%% You may obtain a copy of the License at 9%% 10%% http://www.apache.org/licenses/LICENSE-2.0 11%% 12%% Unless required by applicable law or agreed to in writing, software 13%% distributed under the License is distributed on an "AS IS" BASIS, 14%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15%% See the License for the specific language governing permissions and 16%% limitations under the License. 17%% 18%% %CopyrightEnd% 19%% 20-module(pg_sync). 21 22-define(DRV_CONNECT, $C). 23-define(DRV_DISCONNECT, $D). 24-define(DRV_SELECT, $S). 25 26-export([connect/1, disconnect/1, select/2]). 27 28connect(ConnectStr) -> 29 case erl_ddll:load_driver(".", "pg_sync") of 30 ok -> ok; 31 {error, already_loaded} -> ok; 32 E -> exit(E) 33 end, 34 Port = open_port({spawn, ?MODULE}, []), 35 case binary_to_term(port_control(Port, ?DRV_CONNECT, ConnectStr)) of 36 ok -> {ok, Port}; 37 Error -> Error 38 end. 39 40disconnect(Port) -> 41 R = binary_to_term(port_control(Port, ?DRV_DISCONNECT, "")), 42 port_close(Port), 43 R. 44 45select(Port, Query) -> 46 binary_to_term(port_control(Port, ?DRV_SELECT, Query)). 47 48