unsigned int db_locate_servers_ex( SQLCA * sqlca, SQL_CALLBACK_PARM callback_address, void * callback_user_data, unsigned int bitmask);
TCP/IP で受信しているローカル・ネットワーク上のすべての SQL Anywhere データベース・サーバをリストして、dblocate ユーティリティによって表示される情報にプログラムからアクセスできるようにします。また、コールバック関数に渡されるアドレスの選択に使用するマスク・パラメータを提供します。
コールバック関数には、次のプロトタイプが必要です。
int (*)( SQLCA * sqlca, a_server_address * server_addr, void * callback_user_data );
コールバック関数は、検出されたサーバごとに呼び出されます。コールバック関数が 0 を返すと、db_locate_servers_ex はサーバ間の反復を中止します。
コールバック関数に渡される sqlca と callback_user_data は、db_locate_servers に渡されるものと同じです。2 番目のパラメータは a_server_address 構造体へのポインタです。a_server_address は sqlca.h で次のように定義されています。
typedef struct a_server_address { a_sql_uint32 port_type; a_sql_uint32 port_num; char *name; char *address; char *dbname; } a_server_address; |
port_type この時点では常に PORT_TYPE_TCP です (sqlca.h では 6 に定義されています)。
port_num このサーバが受信している TCP ポート番号です。
name サーバ名があるバッファを指します。
address サーバの IP アドレスがあるバッファを指します。
dbname データベース名があるバッファを指します。
3 つのビットマスク・フラグがサポートされています。
これらのフラグは sqlca.h で定義されており、OR を使用して併用できます。
DB_LOOKUP_FLAG_NUMERIC は、コールバック関数に渡されたアドレスがホスト名ではなく IP アドレスであることを確認します。
DB_LOOKUP_FLAG_ADDRESS_INCLUDES_PORT では、コールバック関数に渡された a_server_address 構造体内の TCP/IP ポート番号がアドレスに含まれていることを示します。
DB_LOOKUP_FLAG_DATABASES は、検出されたデータベースごと、または検出されたデータベース・サーバごと (データベース情報の送信をサポートしていない バージョン 9.0.2 以前のデータベース・サーバの場合) にコールバック関数が 1 回呼び出されることを示します。
正常終了すると 1 を返し、それ以外は 0 を返します。
詳細については、サーバ列挙ユーティリティ (dblocate)を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |