全て クラス 名前空間 関数 変数 型定義 列挙型 列挙値 ページ
公開型 | 公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
connMgr クラス

接続管理マネージャ [詳解]

#include <connMgr.h>

+ connMgr の継承関係図

公開型

typedef
bzs::db::transactd::connection::record 
record
 
typedef connRecords records
 

公開メンバ関数

const recordschannels (bool withLock=false)
 
bool connect (const _TCHAR *uri)
 
const recordsconnections ()
 
const recordsdatabases ()
 
databasedb () const
 
void disconnect ()
 
const recordsextendedvars ()
 
bool haLock ()
 
void haUnlock ()
 
const recordsinUseDatabases (__int64 connid)
 
const recordsinUseTables (__int64 connid, int dbid)
 
void postDisconnectAll ()
 
void postDisconnectOne (__int64 connid)
 
const recordsschemaTables (const _TCHAR *dbname)
 
bool setEnableFailover (bool v)
 
bool setRole (int v)
 
bool setTrxBlock (bool v)
 
const recordsslaveHosts ()
 
const recordsslaveStatus (const char *channel=0)
 
const _TCHAR * slaveStatusName (uint_td id) const
 
const recordsstatusvars ()
 
const recordssysvars ()
 
const recordstables (const _TCHAR *dbname)
 
const recordsviews (const _TCHAR *dbname)
 

静的公開メンバ関数

static connMgrcreate (database *db)
 
static const _TCHAR * extendedVarName (uint_td id)
 
static void removeSystemDb (records &recs)
 
static const _TCHAR * statusvarName (uint_td id)
 
static const _TCHAR * sysvarName (uint_td id)
 

詳解

接続管理マネージャ

connMgrクラスは主に以下のことを行います。

  1. Transactdクライアントの接続、データベース、テーブルの使用状況情報の取得
  2. Transactdクライアントの強制切断
  3. データベース、テーブル、ビューなどの一覧情報の取得
  4. Transactdサーバー状態の取得
  5. レプリケーションスレーブ状態の取得

オペレーションの結果ステータスは stat() で受け取ることができます。オペレーションの実行後は stat() を確認してください。
結果データは struct bzs::db::transactd::connection::record に格納されて返されます。この結果は クラス内にある結果オブジェクトを参照で返しています。そのため、この結果が有効なのは次のオペレーションを実行 するまでです。結果を保持したい場合は、コピーするようにしてください。

connection::records& rsTmp = mgr->tables("dbname");
connection::records rs = tmp; // コピーを保持
注釈
nstable クラスより nstable::tdapErr() nstable::release() nstable::isOpen() の3つのメソッドが using 指令によってパブリックアクセス可能になっています。 このクラスのpublicメソッドに加えてください。(using はDOXYGENによってリストされません。)

型定義メンバ詳解

結果レコードクラス

結果レコード connRecords

関数詳解

const records & channels ( bool  withLock = false)

サーバーがスレーブの場合、接続チャンネル名の一覧を返します。チャンネル名にはデフォルトの空文字""のチャンネルも含みます。

bool connect ( const _TCHAR *  uri)

新しい接続を作成し、uriで指定したサーバーに接続します。 connMgr::create(db) で渡したデータベースオブジェクトが接続済であった場合は、接続の参照カウンタを一つ減らし (減らした結果、参照カウンタがゼロなら切断され)新しい接続を作成し接続します。
既にデータベースが開かれていた場合は、接続に失敗し stat() は STATUS_DB_YET_OPEN を返します。

const records & connections ( )

サーバーに接続しているクライアントの一覧を取得します。一覧にはこの接続は含まれません。

static connMgr * create ( database db)
static

connMgrオブジェクトを生成します。未接続のデータベースオブジェクトを渡します。
解放は release() を呼び出してください。

const records & databases ( )

データベースの一覧を取得します。この結果にはMySQLのシステムデータベースも含んでいます。 それらを除外したい場合は、 removeSystemDb() を使用してください。

database * db ( ) const

コンストラクタで指定したデータベースオブジェクトを返します。

void disconnect ( )

connect() で作成した接続を切断します。

static const _TCHAR * extendedVarName ( uint_td  id)
static

extendedvars() で得られる内容のタイトル名を取得します。

const records & extendedvars ( )

サーバーの拡張情報を取得します。 結果セットは、常に同じ順序で extendedVarName() で得られるタイトルの内容です。

得られる情報の内容と順序は以下の通りです。

  • MySQL_Gtid_Mode : MySQLの gtid_modeの値を返します。MariaDBの場合は無効です。
  • Binlog_File : 現在のバイナリログ名を返します。
  • Binlog_Position : 現在のバイナリログポジションを返します。
  • Executed_Gtid_Set/Gtid_Cur_Pos : 現在のGTIDセットまたは、GTID値を返します。
bool haLock ( )

サーバーのHaオブジェクトをロックします。ロックが中に他のクライアントが haLock() haUnlock() setRole() setTrxBlock() setEnableFailover() を行うSTATUS_LOCK_ERRORが返されます。
ロックを行ったクライアントは必ず haUnlock() を呼び出してロックを開放してください。

void haUnlock ( )

サーバーのHaオブジェクトのロックを解除します。

const records & inUseDatabases ( __int64  connid)

connidで指定したクライアントが現在使用しているデータベース一覧を取得します。

const records & inUseTables ( __int64  connid,
int  dbid 
)

connidで指定したクライアントのdbidで指定したデータベースで、現在使用しているテーブルの一覧を取得します。

void postDisconnectAll ( )

すべてのクライアントを強制切断するようメッセージを送信します。 クライアントがビジー状態の時は解放されてから切断が行われます。

void postDisconnectOne ( __int64  connid)

connidで指定したクライアントを強制切断メッセージを送信します。 クライアントがビジー状態の時は解放されてから切断が行われます。

static void removeSystemDb ( records recs)
static

databases() で取得した一覧からMySQLのシステムデータベースをrecsから除外します。

const records & schemaTables ( const _TCHAR *  dbname)

dbnameで指定したデータベースのtransactdスキーマの一覧を取得します。

bool setEnableFailover ( bool  v)

接続先サーバーがスレーブの場合、フェイルオーバー時にマスターを切り替えるかどうかを指定します。 vにtrueをセットするとフェイルオーバーが有効であるとマークされます。
フェイルオーバーも含めたHAの設定は statusvars() の ha 変数で確認できます。
ha変数はビットフラグでそれぞれの意味は以下の通りです。

  • 0 HA_ROLE_SLAVE : サーバーはスレーブです。
  • 1 HA_ROLE_MASTER : サーバーはマスターです。
  • 2 HA_ROLE_NONE : サーバーの役割はありません。
  • 4 HA_RESTORE_ROLE : サーバーの役割を起動時に復元します。
  • 8 HA_ENABLE_FAILOVER : フェイルオーバーが有効です。
bool setRole ( int  v)

サーバーの役割 (Role)をセットします。 vの有効な値は以下の通りです。

  • 0 HA_ROLE_SLAVE : サーバーはスレーブです。
  • 1 HA_ROLE_MASTER : サーバーはマスターです。
  • 2 HA_ROLE_NONE : サーバーの役割はありません。
注釈
ここで指定した役割は、nsdatabase::registerHaNameResolver() で指定した名前解決のための関数で役割チェックを行った際に サーバーの役割としてクライアントに送信され要求した役割と照合されます。
例えば、クライアントとはマスターに接続して書き込みを行いたいとします。 この場合、仮想ホスト名にマスターを指定します。名前解決関数はマスターの実ホスト名を返し接続します。 このときサーバーは自身に割り当てられた役割を返します。ここで役割が異なると接続に失敗します。これにより 名前解決関数にキャッシュされた古いホスト情報により誤ってスレーブに書き込んでしまうなどのトラブルを防止できます。
bool setTrxBlock ( bool  v)

サーバーにTransactdクライアントからの処理要求のブロックについて指示します。 vにtrueを指定すると処理要求をすべてブロックします。
ブロックが有効のときに、クライアントからの何らかの処理要求があると、その処理を終えた後にサーバーは接続を切断します。 但し、トランザクションまたはスナップショット中の場合は切断しません。それらが終了してから切断します。
処理要求のブロックは、マスターをスイッチオーバーする際に使用します。スイッチオーバーを実行するクライアントは まず、 haLock() にてhaオブジェクトをロックしてから setTrxBlock(true) を呼び出し新たなトランザクションをすべてブロックします。 クライアントはすべてのトランザクションが無くなったことを確認してからマスターを切替ることができます。

const records & slaveHosts ( )

サーバーに接続しているスレーブの一覧を取得します。各スレーブごとに ホスト名、ポート番号、ユーザー名、GTIDセットが返されます。 ポート番号は record::port 、ホスト名、ユーザー名、GTIDセットはタブ区切りで record::value() で取得できます。

const records & slaveStatus ( const char *  channel = 0)

サーバーのスレーブ状態を取得します。サーバーがスレーブでない場合は、ゼロ個の結果が返ります。 MySQL 5.7 MariaDB 10.0以降の場合はchannelを指定できます。NULLを指定すると内部で空文字""が使用されます。 結果セットは、常に同じ順序で slaveStatusName() で得られるタイトルの内容です。

const _TCHAR * slaveStatusName ( uint_td  id) const

slaveStatus() で得られる内容のタイトル名を取得します。

注釈
この関数は staticではなくなりました。connMgrインスタンス内部でMySQLかMariaDBかを判断してサーバーに合わせたタイトルを返します。
static const _TCHAR * statusvarName ( uint_td  id)
static

statusvar() で得られる内容のタイトル名を取得します。

const records & statusvars ( )

Transactdサーバーステータス変数の値を取得します。 結果セットは、常に同じ順序で statusvarName() で得られるタイトルの内容です。

static const _TCHAR * sysvarName ( uint_td  id)
static

sysvars() で得られる内容のタイトル名を取得します。

const records & sysvars ( )

Transactdサーバーシステム変数 (設定変数)の値を取得します。 結果セットは、常に同じ順序で sysvarName() で得られるタイトルの内容です。

const records & tables ( const _TCHAR *  dbname)

dbnameで指定したデータベースのテーブルの一覧を取得します。

const records & views ( const _TCHAR *  dbname)

dbnameで指定したデータベースのビューの一覧を取得します。

Transactd SDK 2018年07月31日(火) 19時40分32秒 doxygen