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