%%
%% %CopyrightBegin%
%%
%% Copyright Ericsson AB 2002-2010. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
%%
%% %CopyrightEnd%
%%
%
%%
%% Path to the c-program.
-define(SERVERDIR, filename:nativename(
filename:join(code:priv_dir(odbc), "bin"))).
%% Name of the C program
-define(SERVERPROG, "odbcserver").
%% Constats defining the command protocol between the erlang control
%% process and the port program. These constants must also be defined
%% in the same way in the port program.
-define(OPEN_CONNECTION, 1).
-define(CLOSE_CONNECTION, 2).
-define(COMMIT_TRANSACTION, 3).
-define(COMMIT, 4).
-define(ROLLBACK, 5).
-define(QUERY, 6).
-define(SELECT_COUNT, 7).
-define(SELECT_FIRST, 8).
-define(SELECT_LAST, 9).
-define(SELECT_NEXT, 10).
-define(SELECT_PREV, 11).
-define(SELECT, 12).
-define(SELECT_RELATIVE, 13).
-define(SELECT_ABSOLUTE, 14).
-define(SELECT_N_NEXT, 15).
-define(PARAM_QUERY, 16).
-define(DESCRIBE, 17).
-define(SHUTDOWN, 18).
-define(LENGTH_INDICATOR_SIZE, 4).
-define(INT_VALUE, 1).
-define(STR_VALUE, 2).
-define(ON, 1).
-define(OFF, 2).
-define(DUMMY_OFFSET, 0).
%% Types of parameters given to param_query
-define(USER_SMALL_INT, 1).
-define(USER_INT, 2).
-define(USER_DECIMAL, 3).
-define(USER_NUMERIC, 4).
-define(USER_CHAR, 5).
-define(USER_VARCHAR, 6).
-define(USER_FLOAT, 7).
-define(USER_REAL, 8).
-define(USER_DOUBLE, 9).
-define(USER_BOOLEAN, 10).
-define(USER_TINY_INT, 11).
-define(USER_WCHAR, 12).
-define(USER_WVARCHAR, 13).
-define(USER_TIMESTAMP, 14).
-define(USER_WLONGVARCHAR, 15).
%% INPUT & OUTPUT TYPE
-define(IN, 0).
-define(OUT, 1).
-define(INOUT, 2).
%% EXIT CODES
-define(EXIT_SUCCESS, 0). % As defined in c iso_stdlib
-define(EXIT_FAILURE, 1). % As defined in c iso_stdlib
-define(EXIT_ALLOC, 2).
-define(EXIT_ENV, 3).
-define(EXIT_CONNECTION, 4).
-define(EXIT_FREE, 5).
-define(EXIT_STDIN_HEADER, 6).
-define(EXIT_STDIN_BODY, 7).
-define(EXIT_BIN, 8).
-define(EXIT_THREAD, 9).
-define(EXIT_PARAM_ARRAY, 10).
-define(EXIT_OLD_WINSOCK, 11).
-define(EXIT_SOCKET_CONNECT, 12).
-define(EXIT_SOCKET_SEND_HEADER, 13).
-define(EXIT_SOCKET_SEND_BODY, 14).
-define(EXIT_SOCKET_RECV_MSGSIZE,15).
-define(EXIT_SOCKET_SEND_MSGSIZE,16).
-define(EXIT_SOCKET_RECV_HEADER, 17).
-define(EXIT_SOCKET_RECV_BODY, 18).
-define(EXIT_COLS, 19).
-define(EXIT_ROWS, 20).
-define(EXIT_DESC, 21).
-define(EXIT_BIND, 22).
-define(EXIT_DRIVER_INFO, 23).
%% Misc constants
-define(DEFAULT_TIMEOUT, infinity).
-define(STR_TERMINATOR, 0).
-define(MAX_SEQ_TIMEOUTS, 10).
%% Handling of C exit codes
-define(ENCODE_EXIT_FUN,
(fun(?EXIT_SUCCESS) ->
normal_exit;
(?EXIT_FAILURE) ->
abnormal_exit;
(?EXIT_ALLOC) ->
memory_allocation_failed;
(?EXIT_ENV) ->
setting_of_environment_attributes_failed;
(?EXIT_CONNECTION) ->
setting_of_connection_attributes_faild;
(?EXIT_FREE) ->
freeing_of_memory_failed;
(?EXIT_STDIN_HEADER) ->
receiving_port_message_header_failed;
(?EXIT_STDIN_BODY) ->
receiving_port_message_body_failed;
(?EXIT_BIN) ->
retrieving_of_binary_data_failed;
(?EXIT_THREAD) ->
failed_to_create_thread;
(?EXIT_PARAM_ARRAY) ->
does_not_support_param_arrays;
(?EXIT_OLD_WINSOCK) ->
too_old_verion_of_winsock;
(?EXIT_SOCKET_CONNECT) ->
socket_connect_failed;
(?EXIT_SOCKET_SEND_HEADER) ->
socket_send_message_header_failed;
(?EXIT_SOCKET_SEND_BODY) ->
socket_send_message_body_failed;
(?EXIT_SOCKET_RECV_MSGSIZE) ->
socket_received_too_large_message;
(?EXIT_SOCKET_SEND_MSGSIZE) ->
too_large_message_in_socket_send;
(?EXIT_SOCKET_RECV_HEADER) ->
socket_receive_message_header_failed;
(?EXIT_SOCKET_RECV_BODY) ->
socket_receive_message_body_failed;
(?EXIT_COLS) ->
could_not_access_column_count;
(?EXIT_ROWS) ->
could_not_access_row_count;
(?EXIT_DESC) ->
could_not_access_table_description;
(?EXIT_BIND) ->
could_not_bind_data_buffers;
(?EXIT_DRIVER_INFO) ->
collecting_of_driver_information_faild;
(_) ->
killed
end)).
-define(PORT_EXIT_REASON(EXIT_STATUS),
?ENCODE_EXIT_FUN(EXIT_STATUS)).