(57)【特許請求の範囲】
【請求項１】
コンピュータに、
記憶部に記憶された電文を読み出し、読み出した電文を相手装置へ送信する送信手順と、
前記記憶部に記憶される電文の総数を示す滞留電文数と、当該電文の総数の長さを示す滞留電文長と、前記記憶部の先頭に格納される電文の格納経過時間を示す電文滞留時間とのそれぞれが、閾値を超えるか否かを監視する監視手順と、
前記監視手順による監視の結果、閾値を超えた数が多いほど相手装置への送信優先度を高くし、送信優先度が高い相手装置ほど単位時間当たりに送信する電文数が多くなるように前記送信手順が送信する電文数を制御する送信電文数制御手順と
を実行させることを特徴とする電文送信制御プログラム。 
【請求項２】
前記送信電文数制御手順は、前記監視手順による監視結果である前記滞留電文数と滞留電文長と電文滞留時間とのそれぞれに基づいて、前記送信手順が単位時間当たりに送信する電文数を決定する送信優先度を算出し、算出した送信優先度に基づいて、前記送信手順が単位時間当たりに送信する電文数を変化させることを特徴とする請求項１に記載の電文送信制御プログラム。 
【請求項３】
送信対象となる電文を記憶する記憶部と、
前記記憶部に記憶された電文を読み出し、読み出した電文を相手装置へ送信する送信部と、
前記記憶部に記憶される電文の総数を示す滞留電文数と、当該電文の総数の長さを示す滞留電文長と、前記記憶部の先頭に格納される電文の格納経過時間を示す電文滞留時間とのそれぞれが、閾値を超えるか否かを監視する監視部と、
前記監視部による監視の結果、閾値を超えた数が多いほど相手装置への送信優先度を高くし、送信優先度が高い相手装置ほど単位時間当たりに送信する電文数が多くなるように前記送信部が送信する電文数を制御する送信電文数制御部と
を有することを特徴とする通信装置。 
【請求項４】
コンピュータが、
記憶部に記憶された電文を読み出し、読み出した電文を相手装置へ送信する送信ステップと、
前記記憶部に記憶される電文の総数を示す滞留電文数と、当該電文の総数の長さを示す滞留電文長と、前記記憶部の先頭に格納される電文の格納経過時間を示す電文滞留時間とのそれぞれが、閾値を超えるか否かを監視する監視ステップと、
前記監視ステップによる監視の結果、閾値を超えた数が多いほど相手装置への送信優先度を高くし、送信優先度が高い相手装置ほど単位時間当たりに送信する電文数が多くなるように前記送信ステップが送信する電文数を制御する送信電文数制御ステップと
を含んだことを特徴とする電文送信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電文送信制御プログラム、通信装置及び電文送信制御方法に関する。
【背景技術】
【０００２】
従来、通信装置は、マルチプロセス／マルチスレッド構成を採用することで、スループットを向上させている。例えば、通信装置は、相手装置と同時に複数の通信パスを確立し、確立した通信パスごとにデータを分散して通信する。あるいは、通信装置は、複数の相手装置それぞれに通信パスを確立し、確立した通信パスごとにデータを通信する。
【０００３】
図２０を用いて具体的に説明すると、通信装置Ａは、通信部Ａと通信部Ｂと通信部Ｃとを有する。通信装置Ａは、通信部Ａと通信部Ｂとのそれぞれで通信装置Ｂとパスを確立し、通信部Ｃと通信装置Ｃとでパスを確立する。このような通信装置Ａにおいて、通信装置Ｂへ送信する電文を受信した場合、振り分け部は、受信した電文をバッファ部Ａ又はバッファ部Ｂへ振り分ける。そして、通信部Ａは、バッファ部Ａから電文を読み出して通信装置Ｂへ送信し、通信部Ｂがバッファ部Ｂから電文を読み出して通信装置Ｂへ送信する。また、通信装置Ｃへ送信する電文を受信した場合も同様に、通信部Ｃは、振り分け部によってバッファ部Ｃへ振り分けられた電文を読み出して通信装置Ｃへ送信する。なお、図２０は、従来技術にかかるマルチプロセス／マルチスレッド構成を採用する通信装置の一例を示す図である。また、ここでいう電文とは、例えば、データやパケット、フレームなどである。
【０００４】
このようなマルチプロセス／マルチスレッド構成を用いた通信装置では、電文の滞留を局所化することができる。具体的には、図２１に示すように、通信部Ａでネットワーク障害が発生した場合、ネットワーク障害が復旧するまでの間、通信部Ａは、電文を送信できないので後続の電文がバッファ部Ａに滞留する。これに対して、通信部Ｂ及び通信部Ｃは通信部Ａに関係なく正常に送信できる。したがって、通信装置Ａは、電文の滞留をバッファ部Ａだけに局所化することができる。
【０００５】
また、通信部Ａの空間再起動を実行する場合、通信部Ａは、再起動を終了するまでの間は電文を送信出来ないので電文がバッファ部Ａに滞留する。かかる場合も同様に、通信部Ｂ及び通信部Ｃは通信部Ａに関係なく正常に送信できる。したがって、通信装置Ａは、電文の滞留をバッファ部Ａだけに局所化することができる。なお、図２１は、通信装置が電文の滞留を局所化する一例を示す図である。
【０００６】
このようにして電文の滞留を局所化できる通信装置においては、通信装置内のバッファ部に電文を振り分ける様々な技術が開示されている。例えば、通信装置は、バッファ部に存在する電文数を考慮せず所定の順序でバッファ部に電文を振り分ける。図２１の例の場合、通信装置Ａは、バッファ部Ａ、バッファ部Ｂ、バッファ部Ｃの順序で電文を振り分ける。
【０００７】
また、通信装置は、各バッファ部に存在する電文数を計測し、計測した電文数に基づいて滞留を判定する。そして、通信装置は、バッファ部に電文が滞留したと判定した場合には、相手装置との間で通信パスが確立した他のバッファ部へ電文を振り分ける。図２１の例の場合、通信装置Ａは、バッファ部Ａに電文が滞留していると判定し、バッファ部Ｂ又はバッファ部Ｃへ電文を振り分ける。
【０００８】
また、通信装置は、優先度の高い電文を優先度の高いバッファ部へ振り分け、優先度の高いバッファ部から優先的に電文を送信する。図２１の例の場合、通信装置Ａは、バッファ部Ｃを優先度の高いバッファ部として設定した場合、優先度の高い電文をバッファ部Ｃへ振り分け、優先的に送信する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平７−３０３１１４号公報
【特許文献２】特開２００７−１３４６２号公報
【特許文献３】特開２００７−３２４７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述した従来の技術では、滞留した電文を早期に送信完了させることができないという課題があった。
【００１１】
具体的には、バッファ部に存在する電文数を考慮せず所定の順序でバッファ部に電文を振り分ける場合、通信装置は、電文の滞留を局所化することしかできず、滞留した電文を早期に送信完了させることはできない。
【００１２】
また、計測した電文数に基づいて滞留を判定する場合、通信装置は、すでに電文が滞留しているバッファ部への振り分けを回避することで電文の破棄を最小限にすることしかできない。したがって、通信装置は、バッファ部に既に滞留している電文を早期に送信することができないので、滞留した電文を早期に送信完了させることはできない。
【００１３】
また、通信装置は、優先的に電文が送信される優先度の高いバッファ部で障害が発生して電文の滞留が生じた場合、優先度が高いため、障害復旧後は優先的に電文を送信するので、滞留を比較的早く回復することができる。ところが、通信装置は、優先的に電文が送信されない優先度の低いバッファ部で障害が発生して電文の滞留が生じた場合、優先度が低いため、障害復旧後も優先的に電文を送信できないので、滞留を早く回復することができない。このように、優先度の違いによって、滞留した電文を送信完了できる時間が異なるので、滞留した電文を早期に送信完了させることができるとは言い難い。
【００１４】
１つの側面では、本発明は、滞留した電文を早期に送信完了させることができる電文送信制御プログラム、通信装置及び電文送信制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本願の開示する電文送信制御プログラム、通信装置及び電文送信制御方法は、記憶された電文を読み出し、読み出した電文を相手装置へ送信する。電文送信制御プログラム、通信装置及び電文送信制御方法は、記憶される電文の滞留状況を監視する。電文送信制御プログラム、通信装置及び電文送信制御方法は、監視された滞留状況に基づいて、送信する電文数を制御する。
【発明の効果】
【００１６】
一つの態様によれば、滞留した電文を早期に送信完了させることができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施例１にかかる通信装置の構成を示すブロック図である。
【図２】図２は、実施例２にかかる通信装置の構成を示すブロック図である。
【図３】図３は、滞留状況記憶部が格納する情報の一例を示す図である。
【図４】図４は、滞留状況管理レコードとして格納される情報の一例を示す図である。
【図５】図５は、閾値記憶部が格納する情報の一例を示す図である。
【図６】図６は、格納制御部によって格納される電文と電文格納時刻との関係を示す図である。
【図７】図７は、格納制御部による電文格納時刻更新の一例を示す図である。
【図８】図８は、送信優先度の増加によって送信部Ａが単位時間当たりに送信する電文数の変化の一例を示す図である。
【図９】図９は、送信部による電文格納時刻更新の一例を示す図である。
【図１０】図１０は、監視部による電文滞留の判定の一例を示す図である。
【図１１】図１１は、格納制御部による処理の処理手順を示すフローチャートである。
【図１２】図１２は、送信部による処理の処理手順を示すフローチャートである。
【図１３】図１３は、実施例２にかかる監視部による処理の処理手順を示すフローチャートである。
【図１４】図１４は、実施例２にかかる送信電文数制御部による処理の処理手順を示すフローチャートである。
【図１５】図１５は、実施例３にかかる通信装置の構成を示すブロック図である。
【図１６】図１６は、優先度範囲記憶部が格納する情報の一例を示す図である。
【図１７】図１７は、実施例３にかかる監視部による処理の処理手順を示すフローチャートである。
【図１８】図１８は、実施例３にかかる送信電文数制御部による処理の処理手順を示すフローチャートである。
【図１９】図１９は、電文送信制御プログラムを実行するコンピュータシステムを示す図である。
【図２０】図２０は、従来技術にかかるマルチプロセス／マルチスレッド構成を採用する通信装置の一例を示す図である。
【図２１】図２１は、通信装置が電文の滞留を局所化する一例を示す図である。
【発明を実施するための形態】
【００１８】
以下に、本願の開示する電文送信制御プログラム、通信装置及び電文送信制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１９】
図１は、実施例１にかかる通信装置の構成を示すブロック図である。図１に示すように、通信装置１０は、記憶部１１と、送信部１２と、監視部１３と、送信電文数制御部１４とを有する。例えば、通信装置１０は、携帯端末やサーバ装置などに適用できる。
【００２０】
記憶部１１は、送信対象となる電文を記憶する。送信部１２は、記憶部１１に記憶された電文を読み出し、読み出した電文を相手装置へ送信する。監視部１３は、記憶部１１に記憶される電文の滞留状況を監視する。送信電文数制御部１４は、監視部１３によって監視された滞留状況に基づいて、送信部１２が送信する電文数を制御する。
【００２１】
上述してきたように、本実施例１では、通信装置１０において、監視部１３が記憶部１１の滞留状況を判定し、滞留が生じていると判定した場合には、送信電文数制御部１４は、送信部１２が単位時間当たりに送信する電文数を変化させる。すなわち、通信装置１０は、記憶部１１で滞留した電文を早期に送信完了させることができる。
【実施例２】
【００２２】
[実施例２にかかる通信装置の構成]
次に、図２を用いて、実施例２にかかる通信装置１００の構成を説明する。図２は、実施例２にかかる通信装置の構成を示すブロック図である。実施例２にかかる通信装置１００は、記憶部１１０と、受信部１２０と、格納制御部１３０と、バッファ部１４０と、送信部１５０と、制御部１６０とを有する。
【００２３】
記憶部１１０は、例えば、半導体メモリ素子、又はハードディスクなどの記憶装置であり、滞留状況記憶部１１１と閾値記憶部１１２とを有する。さらに、記憶部１１０は、送信部と接続される通信装置の情報を格納する。滞留状況記憶部１１１は、各バッファ部の電文滞留状況を示す滞留状況管理レコードを記憶する。例えば、滞留状況記憶部１１１は、図３に示すように、バッファ部Ａ１４１の滞留状況を示す滞留状況管理レコードＡと、バッファ部Ｂの滞留状況を示す滞留状況管理レコードＢと、バッファ部Ｃの滞留状況を示す滞留状況管理レコードＣとを有する。なお、図３は、滞留状況記憶部が格納する情報の一例を示す図である。
【００２４】
ここで、図４を用いて、滞留状況管理レコードとして格納される情報の例を説明する。ここでは、一例として、滞留状況管理レコードＡとして格納される情報について説明する。滞留状況管理レコードＡには、図４に示すように、「バッファ部識別子」、「滞留電文数」、「滞留電文長」、「電文滞留時間」、「送信優先度」、「電文格納時刻」、「電文格納時刻先頭ポインタ」、「電文格納時刻末尾ポインタ」が対応付けて格納される。
【００２５】
「バッファ部識別子」は、バッファ部Ａ１４１及びバッファ部Ａ１４１と接続される送信部Ａ１５１を一意に識別する情報である。また、「滞留電文数」は、バッファ部Ａ１４１に存在する電文の総数を示す情報である。「滞留電文長」は、バッファ部Ａ１４１に存在する電文の総電文長を示す情報である。「電文滞留時間」は、バッファ部Ａ１４１の先頭に滞留している電文の格納時刻と、現在の時刻との差を示す情報である。「送信優先度」は、送信部Ａ１５１の送信優先度を示す情報である。
【００２６】
「電文格納時刻」は、バッファ部Ａ１４１に電文が格納された時刻を示す情報である。ここで、「電文格納時刻」は、「電文格納時刻０」、「電文格納時刻１」、「電文格納時刻ｎ−１」を含む「電文格納時刻管理領域」として構成される。また、「電文格納時刻管理領域」は、サイクリックバッファとして使用される。言い換えると、「電文格納時刻管理領域」には、バッファ部Ａ１４１に格納できる電文の最大数以上の電文格納時刻管理領域が設定される。そして、電文送信後には送信した電文の格納時刻が格納されていた「電文格納時刻領域」が再使用される。この結果、「電文格納時刻管理領域」には、バッファ部Ａ１４１の電文格納回数に制限されることなく、バッファ部Ａ１４１に電文が格納された時刻が格納される。
【００２７】
「電文格納時刻先頭ポインタ」は、バッファ部Ａ１４１の先頭に位置する電文の格納時刻を示す情報である。ここで、例えば、「電文格納時刻管理領域」が「電文格納時刻０」から「電文格納時刻５」で構成される場合には、「電文格納時刻先頭ポインタ」は、「電文格納時刻５」の次には「電文格納時刻０」を示す。また、「電文格納時刻末尾ポインタ」は、バッファ部Ａ１４１の末尾に位置する電文の格納時刻を示す情報である。ここで、例えば、「電文格納時刻管理領域」が「電文格納時刻０」から「電文格納時刻５」で構成される場合には、「電文格納時刻末尾ポインタ」は、「電文格納時刻５」の次には「電文格納時刻０」を示す。
【００２８】
例えば、滞留状況管理レコードＡには、図４に示すように、「バッファ部識別子」が「Ａ」で識別されるバッファ部の「滞留電文数」が「５」、「滞留電文長」が「６４０」、「電文滞留時間」が「５００」、「送信優先度」が「低」であることを示す情報が格納される。
【００２９】
また、滞留状況管理レコードＡには、「電文格納時刻０」が「３：１２：４３」、「電文格納時刻１」が「３：１２：４４」、「電文格納時刻ｎ−１」が「３：１２：ｘｘ」であることを示す情報が格納される。また、滞留状況管理レコードＡには、「Ａ」で識別されるバッファ部の先頭に格納された電文の格納時刻が「３：１２：４３」、末尾に格納された電文の格納時刻が「３：１２：ｘｘ」であることを示す情報が格納される。なお、図４は、滞留状況管理レコードが格納する情報の一例を示す図である。また、滞留状況管理レコードＢ及び滞留状況管理レコードＣは、滞留状況管理レコードＡと同様の情報を格納するので詳細な説明を省略する。
【００３０】
閾値記憶部１１２は、バッファ部１４０に存在する電文が滞留しているか否かを判定する基準となる情報を記憶する。例えば、閾値記憶部１１２は、図５に示すように、「想定トランザクション量」と「送信部の数」と「最大１電文長」と「滞留電文数閾値」と「滞留電文長閾値」と「電文滞留時間閾値」とを記憶する。
【００３１】
ここで、図５に示す閾値記憶部１１２の「想定トランザクション量」は、想定される１秒当たりのトランザクション量を示す情報である。また、「送信部の数」は、送信部１５０に含まれる送信部の数を示す情報である。また、「最大１電文長」は、１電文当たりに許容できる電文長を示す情報である。また、「滞留電文数閾値」は、「想定トランザクション量／通信部の数」によって決定される滞留電文数の閾値を示す情報である。また、「滞留電文長閾値」は、「最大１電文長×想定トランザクション量／通信部の数」によって決定される滞留電文長の閾値を示す情報である。また、「電文滞留時間閾値」は、「通信部の数／想定トランザクション量」によって決定される電文滞留時間の閾値を示す情報である。
【００３２】
具体的には、図５に示す閾値記憶部１１２は、「想定トランザクション量」が「６０」、「送信部の数」が「３」、「最大１電文長」が「３００」であることを示す情報を記憶する。また、閾値記憶部１１２は、「滞留電文数閾値」が「２０」、「滞留電文長閾値」が「６０００」、「電文滞留時間閾値」が「０．０５」であることを示す情報を記憶する。なお、図５は、閾値記憶部が格納する情報の一例を示す図である。また、上述した各閾値は、バッファ部１４０に含まれる複数のバッファ部間で共通である。
【００３３】
受信部１２０は、パスが確立された送信元の相手装置から電文を受信し、受信した電文を格納制御部１３０へ転送する。格納制御部１３０は、受信部１２０によって受信された電文をバッファ部１４０へ格納する制御部である。例えば、格納制御部１３０は、受信部１２０から電文を受信した場合、電文に付与された送信先の相手装置に関する情報を抽出し、送信先の相手装置とパスが確立される送信部のバッファ部へ電文を格納する。
【００３４】
また、格納制御部１３０は、バッファ部１４０へ電文を格納した場合、滞留状況管理レコードに格納された「滞留電文数」と「滞留電文長」の値を更新する。例えば、格納制御部１３０は、受信した電文の電文長を抽出し、抽出した「電文長」の値を滞留状況管理レコードに格納された「滞留電文長」の値に加算する。具体例として、格納制御部１３０は、電文長が「１４０」である電文をバッファ部Ａ１４１に格納した場合を説明する。この場合、格納制御部１３０は、既にバッファ部Ａ１４１に存在する電文数が「４」、電文長が「５００」であった場合、滞留状況管理レコードに電文数「５」、電文長「６４０」を格納する。
【００３５】
また、格納制御部１３０は、電文をバッファ部Ａ１４１に格納した時刻を示す「電文格納時刻」を滞留状況管理レコードに格納する。例えば、格納制御部１３０は、電文を受信部１２０から受信した場合、時間計測部１６３へ現在時刻の通知を要求することで現在時刻を取得する。そして、格納制御部１３０は、電文をバッファ部Ａ１４１へ格納した時間として時間計測部１６３から取得した時刻を滞留状況管理レコードに格納する。
【００３６】
図６に示す具体例を用いて、電文と電文格納時刻との関係を説明する。図６に示すように、格納制御部１３０は、バッファ部Ａ１４１に電文Ａ、電文Ｂ、電文Ｃ、電文Ｄを順に格納する。この場合、格納制御部１３０は、滞留状況管理レコードの「電文格納時刻管理領域」に電文格納時刻を格納する。具体的には、格納制御部１３０は、滞留状況管理レコードの「電文格納時刻０」に、電文Ａが格納された時刻を格納する。同様に、格納制御部１３０は、電文Ｂが格納された時刻を「電文格納時刻１」に、電文Ｃが格納された時刻を「電文格納時刻２」に、電文Ｄが格納された時刻を「電文格納時刻３」に格納する。
【００３７】
また、格納制御部１３０は、電文を格納した場合には、バッファ部１４０に存在する電文のうち、末尾の電文が格納された時刻を示す「電文格納時刻の末尾ポインタ」を更新する。例えば、格納制御部１３０は、現在の電文格納時刻の末尾のポインタが示す電文格納時刻を次の値に更新する。具体的には、図７に示す電文Ｅが格納された場合、格納制御部１３０は、「電文格納時刻の末尾ポインタ」を「電文格納時刻３」から「電文格納時刻４」へ更新した情報を滞留状況管理レコードに格納する。
【００３８】
続いて、格納制御部１３０は、「電文格納時刻の末尾ポインタ」を更新した後、電文格納時刻の末尾ポインタが電文格納時刻管理領域の最大値であるか否かを判定する。具体的には、格納制御部１３０は、現在の電文格納時刻の末尾ポインタが「電文格納時刻４」であった場合、「４」に「１」を加えた値「５」を算出する。そして、格納制御部１３０は、算出した電文格納時刻の末尾ポインタの値「５」が最大値を超えたか否かを判定する。ここで、最大値を「６」と仮定した場合、格納制御部１３０は、算出した値「５」を現在の電文格納時刻の末尾ポインタとして更新する。また、ここで、最大値を「４」と仮定した場合、格納制御部１３０は、算出した値「５」ではなく、「０」を現在の電文格納時刻の末尾ポインタとして更新する。すなわち、格納制御部１３０は、電文格納時刻管理領域の最大値まで使用した場合には、「電文格納時刻の末尾ポインタ」を「電文格納時刻０」に更新する。
【００３９】
バッファ部１４０は、バッファ部Ａ１４１と、バッファ部Ｂ１４２とバッファ部Ｃ１４３とを有し、送信部１１０によって取り出されるまでの間、格納制御部１３０によって振り分けられた電文を一時的に格納する。このバッファ部１４０は、電文格納時刻が古い電文から先に取り出されるＦＩＦＯ（First-In  First-Out）で制御される。
【００４０】
バッファ部Ａ１４１は、送信部Ａ１５１によって取り出される電文を一時的に格納する。また、バッファ部Ｂ１４２は、送信部Ｂ１５２によって取り出される電文を一時的に格納する。バッファ部Ｃ１４３は、送信部Ｃ１５３によって取り出される電文を一時的に格納する。
【００４１】
送信部１５０は、バッファ部１４０に電文が存在する場合には、バッファ部１４０各々から電文を読み出し、パスが確立された相手装置へ送信電文数制御部１６２によって設定された送信優先度にしたがって読み出した電文を送信する。このような送信部１５０は、送信部Ａ１５１と、送信部Ｂ１５２と、送信部Ｃ１５３とを有する。
【００４２】
送信部Ａ１５１は、例えば、送信優先度を増加させる通知を受付けた場合には、送信部Ｂ１５２及び送信部Ｃ１５３が使用していないタイムスライスを優先的に使用することで、単位時間当たりの電文送信量を増加させる。
【００４３】
具体的には、送信部Ａ１５１は、図８に示すように、送信部Ａ１５１〜Ｃ１５３の優先度が「低」に設定されていた場合には、送信部Ａ１５１は、単位時間当たりに２つの電文を送信する。ここで、送信電文数制御部１６２によって優先度が「高」に設定された場合には、送信部Ａ１５１は、送信部Ｂ１５２及び送信部Ｃ１５３が使用していないタイムスライスを優先的に使用することで、単位時間当たりに４つの電文を送信する。なお、図８は、送信優先度の増加によって送信部Ａが単位時間当たりに送信する電文数の変化の一例を示す図である。
【００４４】
また、送信部Ａ１５１は、電文を送信した場合には、滞留状況管理レコードＡを更新する。例えば、送信部Ａ１５１は、読み出した電文の電文長を抽出し、抽出した「電文長」の値を滞留状況管理レコードＡに格納された「滞留電文長」の値から減算する。具体例として、電文長が「２００」である電文をバッファ部Ａ１４１から読み出した場合を説明する。送信部Ａ１５１は、既にバッファ部Ａ１４１に存在する電文数が「５」、電文長が「６４０」であった場合、滞留状況管理レコードＡに電文数「４」、電文長「４４０」を格納する。
【００４５】
また、送信部Ａ１５１は、電文を送信した場合には、バッファ部Ａ１４１に存在する電文のうち、先頭の電文が格納された時刻を示す「電文格納時刻の先頭ポインタ」を更新する。例えば、送信部Ａ１５１は、現在の電文格納時刻の先頭のポインタが示す電文格納時刻を次の値に更新する。具体的には、送信部Ａ１５１は、図９に示すように、電文Ａを送信した場合、「電文格納時刻の先頭ポインタ」を「電文格納時刻０」から「電文格納時刻１」へ更新し、更新した情報を滞留状況管理レコードに格納する。
【００４６】
続いて、送信部Ａ１５１は、「電文格納時刻の先頭ポインタ」を更新した後、電文格納時刻の先頭ポインタが電文格納時刻の最大値、すなわち「ｎ−１」であるか否かを判定する。具体的には、送信部Ａ１５１は、現在の電文格納時刻の先頭ポインタが「４」であった場合、「４」に「１」を加えた値「５」を算出する。そして、送信部Ａ１５１は、算出した電文格納時刻の末尾ポインタの値「５」が最大値を超えたか否かを判定する。ここで、最大値を「６」と仮定した場合、送信部Ａ１５１は、算出した値「５」を現在の電文格納時刻の先頭ポインタとして更新する。また、ここで、最大値を「４」と仮定した場合、送信部Ａ１５１は、算出した値「５」ではなく、「０」を現在の電文格納時刻の先頭ポインタとして更新する。すなわち、送信部Ａ１５１は、電文格納時刻を「ｎ−１」まで使用した場合には、「電文格納時刻の先頭ポインタ」を「電文格納時刻０」に更新する。なお、送信部Ｂ１５２及び送信部Ｃ１５３は、送信部Ａ１５１と同様の機能を有するので、送信部Ｂ１５２及び送信部Ｃ１５３について詳細な説明を省略する。
【００４７】
制御部１６０は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有する。制御部１６０は、監視部１６１と送信電文数制御部１６２と時間計測部１６３とを有する。例えば、制御部１６０は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、又は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路である。
【００４８】
監視部１６１は、バッファ部１４０に存在する電文の滞留時間を監視し、滞留状況管理レコードＡ〜Ｃを更新する制御部である。監視部１６１は、バッファ部１４０を監視した時刻を取得し、取得した時刻から電文格納時刻の先頭ポインタが示す時刻を差し引いた時間を滞留時間として算出する。例えば、監視部１６１は、格納制御部１３０がバッファ部Ａ１４１に電文を格納した場合、時間計測部１６３に現在時刻の取得を要求し、時間計測部１６３から現在時刻の通知を受付ける。そして、監視部１６１は、取得した現在の時刻が「３：１２：５５」、電文格納時刻の先頭ポインタが示す時刻が「３：１２：４３」であった場合、電文滞留時間を「１２（秒）」として算出する。続いて、監視部１６１は、滞留状況管理レコードＡの「電文滞留時間」に算出した電文滞留時間を格納する。
【００４９】
また、監視部１６１は、電文滞留時間と滞留電文数と滞留電文長とに基づいて、バッファ部の滞留状況を判定する。例えば、監視部１６１は、滞留状況管理レコードＡから電文数、電文長、滞留時間を読み出し、読み出した各値が閾値記憶部１１２から読み出した電文数、電文長、滞留時間の閾値を超えたか否かを判定する。
【００５０】
具体例として、監視部１６１は、図５に示す滞留電文数閾値、滞留電文長閾値、電文滞留時間閾値を用いて電文の滞留を判定する場合を説明する。また、図１０に示す「バッファ部識別子」、「滞留電文数」、「滞留電文長」、「電文滞留時間」、「送信優先度」は、バッファ部識別子に対応する滞留状況管理レコードから抜粋した値であると仮定する。なお、ここで、示す各値は、滞留状況管理レコードと同様であるため、説明は省略する。
【００５１】
図１０は、バッファ部識別子「Ａ」に対応するバッファ部Ａ１４１において、滞留電文数が「５」、滞留電文長が「６４０」、電文滞留時間が「５００」であり、送信優先度が「低」であることを示す。この場合、監視部１６１は、滞留電文数「５」と図５に示す滞留電文数閾値「２０」とを比較し、滞留電文数が閾値を超えていないと判定する。また、監視部１６１は、滞留電文長「６４０」と図５に示す滞留電文長閾値「６０００」とを比較し、滞留電文長が閾値を超えていないと判定する。また、監視部１６１は、電文滞留時間「５００」と図５に示す電文滞留時間閾値「０．０５」とを比較し、電文滞留時間が閾値を超えていると判定する。
【００５２】
同様に、監視部１６１は、電文滞留時間を算出し、算出した電文滞留時間を滞留状況管理レコードＢに格納する。また、監視部１６１は、滞留状況管理レコードＢから電文数、電文長、滞留時間を読み出し、読み出した各値が閾値記憶部１１２から読み出した電文数、電文長、滞留時間それぞれの閾値を超えたか否かを判定する。
【００５３】
図１０は、バッファ部識別子「Ｂ」に対応するバッファ部Ｂ１４２において、滞留電文数が「３０」、滞留電文長が「７６８０」、電文滞留時間が「２０００」であり、送信優先度が「低」であることを示す。この場合、監視部１６１は、滞留電文数「３０」と図５に示す滞留電文数閾値「２０」とを比較し、滞留電文数が閾値を超えていると判定する。また、監視部１６１は、滞留電文長「７６８０」と図５に示す滞留電文長閾値「６０００」とを比較し、滞留電文長が閾値を超えていると判定する。また、監視部１６１は、電文滞留時間「２０００」と図５に示す電文滞留時間閾値「０．０５」とを比較し、電文滞留時間が閾値を超えていると判定する。
【００５４】
同様に、監視部１６１は、電文滞留時間を算出し、算出した電文滞留時間を滞留状況管理レコードＣに格納する。また、監視部１６１は、滞留状況管理レコードＣから電文数、電文長、滞留時間を読み出し、読み出した各値が閾値記憶部１１２から読み出した電文数、電文長、滞留時間それぞれの閾値を超えたか否かを判定する。
【００５５】
図１０は、バッファ部識別子「Ｃ」に対応するバッファ部Ｃ１４３における、滞留電文数が「１０」、滞留電文長が「１９２０」、電文滞留時間が「１０００」であり、送信優先度が「高」であることを示す。この場合、監視部１６１は、滞留電文数「１０」と図５に示す滞留電文数閾値「２０」とを比較し、滞留電文数が閾値を超えていないと判定する。また、監視部１６１は、滞留電文長「１９２０」と図５に示す滞留電文長閾値「６０００」とを比較し、滞留電文長が閾値を超えていないと判定する。また、監視部１６１は、電文滞留時間「１０００」と図５に示す電文滞留時間閾値「０．０５」とを比較し、電文滞留時間が閾値を超えていると判定する。
【００５６】
続いて、監視部１６１は、監視したバッファ部の電文滞留状況に基づいて、送信優先度を増加させる送信部を判定する。ここでは、監視部１６１は、例えば、バッファ部のうち、最も電文が滞留しているバッファ部と接続された送信部の送信優先度を増加させるものとして説明する。
【００５７】
監視部１６１は、バッファ部１４０における電文滞留状況を判定した結果を比較する。例えば、監視部１６１は、バッファ部Ａ１４１において閾値が１つ超えており、バッファ部Ｂ１４２において閾値が３つ超えており、バッファ部Ｃ１４３において閾値が１つ超えているので、バッファ部Ｂ１４２を最も電文が滞留しているバッファ部と判定する。そして、監視部１６１は、送信電文数制御部１６２に対して、最も電文が滞留しているバッファ部Ｂ１４２の送信優先度を増加させるように通知する。また、監視部１６１は、送信電文数制御部１６２に対して、バッファ部Ａ１４１の送信優先度を減少させるように通知する。また、監視部１６１は、送信電文数制御部１６２に対して、バッファ部Ｃ１４３の送信優先度を減少させるように通知する。なお、図１０は、監視部による電文滞留の判定の一例を示す図である。
【００５８】
送信電文数制御部１６２は、監視部１６１によって監視されたバッファ部１４０の電文滞留状況に基づいて、送信部１５０の送信優先度の設定を変更する制御部である。言い換えると、送信電文数制御部１６２は、送信部１５０によって送信される単位時間当たりの電文量を変更する。
【００５９】
例えば、送信電文数制御部１６２は、送信優先度を増加させると判定した送信部が有するプログラムにアクセスし、アクセスしたプログラムに記述された単位時間当たりの送信電文量を増加させる。また、送信電文数制御部１６２は、送信優先度を減少させると判定した送信部が有するプログラムにアクセスし、アクセスしたプログラムに記述された単位時間当たりの送信電文量を減少させる。
【００６０】
例えば、送信電文数制御部１６２は、監視部１６１から送信優先度の変更要求通知を受付けた場合には、要求種別を判定して、判定した要求に基づいて送信部１５０の優先度を変更する。具体的には、送信電文数制御部１６２は、監視部１６１から受付けた送信優先度の変更要求が送信部１５０各々に対して増加を指示するものであるか、減少を指示するものであるかを判定する。
【００６１】
送信電文数制御部１６２は、監視部１６１から送信優先度を増加させる通知を受付けた場合、最大優先度に設定されているか否かを判定する。すでに最大優先度である「高」に設定されていた場合には、送信電文数制御部１６２は、優先度を変更しない。最大優先度である「高」に設定されていない場合には、送信電文数制御部１６２は、滞留状況管理レコードの「送信優先度」を最大優先度である「高」へ更新する。
【００６２】
また、送信電文数制御部１６２は、送信優先度を減少させる通知を受付けた場合、デフォルト優先度に設定されているか否かを判定する。すでにデフォルト優先度である「低」に設定されていた場合には、送信電文数制御部１６２は、優先度を変更しない。デフォルト優先度である「低」に設定されていない場合には、送信電文数制御部１６２は、滞留状況管理レコードの「送信優先度」をデフォルト優先度である「低」へ更新する。
【００６３】
例えば、図１０を例にして説明すると、送信電文数制御部１６２は、バッファ部Ａ１４１について送信優先度を減少させる通知を受付ける。この場合、送信電文数制御部１６２は、滞留状況管理レコードＡの送信優先度の値を検索し、この値が「低」であることから、すでにデフォルト優先度に設定されていると判定する。この場合、送信電文数制御部１６２は、滞留状況管理レコードＡの送信優先度を変更しない。
【００６４】
また、図１０を例にして説明すると、送信電文数制御部１６２は、バッファ部Ｂ１４２について送信優先度を増加させる通知を受付ける。この場合、送信電文数制御部１６２は、滞留状況管理レコードＢの送信優先度の値を検索し、この値が「低」であることから、最大優先度には設定されていないと判定し、滞留状況管理レコードＢの送信優先度の値を最大優先度である「高」に更新する。
【００６５】
また、図１０を例にして説明すると、送信電文数制御部１６２は、バッファ部Ｃ１４３について送信優先度を減少させる通知を受付ける。この場合、送信電文数制御部１６２は、滞留状況管理レコードＣの送信優先度の値を検索し、この値が「高」であることから、最大優先度に設定されていると判定し、滞留状況管理レコードＣの送信優先度の値をデフォルト優先度である「低」に更新する。
【００６６】
時間計測部１６３は、格納制御部１３０からの要求に対して、現在の時刻を通知する制御部である。例えば、時間計測部１６３は、格納制御部１３０が電文を格納する場合に、格納制御部１３０からの要求に応答して現在の時刻を通知する。
【００６７】
時間計測部１６３は、所定の時間が経過した場合に、監視部１６１へ所定の時間が経過したことを通知する。具体的には、時間計測部１６３は、監視部１６１へ通知し、バッファ部１４０を監視させる。
【００６８】
また、時間計測部１６３は、監視部１６１が電文滞留時間を計測する場合に、監視部１６１からの要求に応答して現在の時刻を通知する。
【００６９】
[格納制御部による処理の処理手順]
次に、図１１を用いて格納制御部１３０による処理の処理手順を説明する。図１１は、格納制御部による処理の処理手順を示すフローチャートである。格納制御部１３０は、受信部１２０から電文を受信したと判定した場合（ステップＳ１０１、Ｙｅｓ）、バッファ部１４０に電文を格納し（ステップＳ１０２）、滞留状況管理レコードの「電文数」と「電文長」を更新する（ステップＳ１０３）。
【００７０】
続いて、格納制御部１３０は、電文格納時刻の末尾ポインタを更新し（ステップＳ１０４）、電文格納時刻の末尾ポインタが最大値であるか否かを判定する（ステップＳ１０５）。格納制御部１３０は、電文格納時刻の末尾ポインタが最大値であると判定した場合には（ステップＳ１０５、Ｙｅｓ）、電文格納時刻の末尾ポインタを０に戻し（ステップＳ１０６）、処理を終了する。一方、格納制御部１３０は、電文格納時刻の末尾ポインタが最大値ではないと判定した場合には（ステップＳ１０５、Ｎｏ）、処理を終了する。
【００７１】
[送信部による処理の処理手順]
次に、図１２を用いて送信部１５０による処理の処理手順を説明する。図１２は、送信部による処理の処理手順を示すフローチャートである。送信部１５０は、バッファ部１４０に電文が存在すると判定した場合（ステップＳ２０１、Ｙｅｓ）、電文を送信する（ステップＳ２０２）。送信部１５０は、電文格納時刻の先頭ポインタを更新し（ステップＳ２０３）、電文格納時刻の先頭ポインタが最大値であるか否かを判定する（ステップＳ２０４）。
【００７２】
送信部１５０は、電文格納時刻の先頭ポインタが最大値であると判定した場合には（ステップＳ２０４、Ｙｅｓ）、電文格納時刻の先頭ポインタを０に戻す（ステップＳ２０５）。続いて、送信部１５０は、滞留状況管理レコードの「電文数」と「電文長」を更新し（ステップＳ２０６）、処理を終了する。一方、送信部１５０は、電文格納時刻の先頭ポインタが最大値ではないと判定した場合には（ステップＳ２０４、Ｎｏ）、滞留状況管理レコードの「電文数」と「電文長」を更新し（ステップＳ２０６）、処理を終了する。
【００７３】
[監視部による処理の処理手順]
次に、図１３を用いて実施例２にかかる監視部１６１による処理の処理手順を説明する。図１３は、実施例２にかかる監視部による処理の処理手順を示すフローチャートである。監視部１６１は、所定の時間が経過したと判定した場合（ステップＳ３０１、Ｙｅｓ）、先頭のバッファ部１４０を監視する（ステップＳ３０２）。監視部１６１は、現在の時刻を取得し（ステップＳ３０３）、滞留状況管理レコードの「電文滞留時間」を更新する（ステップＳ３０４）。
【００７４】
続いて、監視部１６１は、閾値記憶部１１２から滞留電文数、滞留電文長、電文滞留時間についての閾値を読み出し、滞留状況管理レコードに格納された滞留電文数、滞留電文長、電文滞留時間の各値が閾値を超えたか否かを判定する（ステップＳ３０５）。
【００７５】
続いて、監視部１６１は、監視しているバッファ部１４０が最終のバッファ部であるか否かを判定する（ステップＳ３０６）。監視部１６１は、監視しているバッファ部１４０が最終バッファ部であると判定した場合には（ステップＳ３０６、Ｙｅｓ）、送信電文数制御部１６２へ送信優先度の変更を通知し（ステップＳ３０７）、処理を終了する。一方、監視部１６１は、監視しているバッファ部１４０が最終バッファ部ではないと判定した場合には（ステップＳ３０６、Ｎｏ）、次のバッファ部を監視し（ステップＳ３０８）、最終バッファ部であると判定するまで、ステップＳ３０４以降の処理を繰り返す。
【００７６】
[送信電文数制御部による処理の処理手順]
次に、図１４を用いて実施例２にかかる送信電文数制御部１６２による処理の処理手順を説明する。図１４は、実施例２にかかる送信電文数制御部による処理の処理手順を示すフローチャートである。送信電文数制御部１６２は、監視部１６１から送信優先度を変更させる通知を受付けた場合には（ステップＳ４０１、Ｙｅｓ）、通知が優先度の増加を指示するものであるか否かを判定する（ステップＳ４０２）。
【００７７】
送信電文数制御部１６２は、通知が優先度の増加を指示するものであると判定した場合には（ステップＳ４０２、Ｙｅｓ）、送信優先度が最大優先度であるか否かを判定する（ステップＳ４０３）。送信電文数制御部１６２は、送信優先度が最大優先度であると判定した場合には（ステップＳ４０３、Ｙｅｓ）、そのまま処理を終了する。一方、送信電文数制御部１６２は、送信優先度が最大優先度ではないと判定した場合には（ステップＳ４０３、Ｎｏ）、滞留状況管理レコードを更新し（ステップＳ４０４）、送信部１５０の送信優先度を変更する（ステップＳ４０５）。
【００７８】
一方、送信電文数制御部１６２は、通知が優先度の増加を指示するものではないと判定した場合には（ステップＳ４０２、Ｎｏ）、送信優先度がデフォルト優先度であるか否かを判定する（ステップＳ４０６）。送信電文数制御部１６２は、送信優先度がデフォルト優先度であると判定した場合には（ステップＳ４０６、Ｙｅｓ）、そのまま処理を終了する。一方、送信電文数制御部１６２は、送信優先度がデフォルト優先度ではないと判定した場合には（ステップＳ４０６、Ｎｏ）、滞留状況管理レコードを更新し（ステップＳ４０７）、送信部１５０の送信優先度を変更する（ステップＳ４０８）。
【００７９】
[実施例２の効果]
上述してきたように、本実施例２では、格納制御部１３０が電文を格納し、「電文数」と「電文長」を更新する。また、監視部１６１は、「電文滞留時間」を更新する。そして、監視部１６１は、バッファ部各々における「電文数」、「電文長」、「電文滞留時間」が所定の閾値を超えたか否かを判定し、送信電文数制御部１６２に閾値を最も超えたバッファ部１４０の送信優先度を変更させる。したがって、本実施例にかかる通信装置１００は、「滞留電文数」、「滞留電文長」、「電文滞留時間」に応じて送信部１５０の送信優先度を動的に増加させることで、電文送信間隔を短縮することができる。言い換えると、本実施例にかかる通信装置１００は、送信部１５０が単位時間当たり送信する電文数を増加させる。この結果、通信装置１００は、バッファ部１４０で滞留した電文を早期に送信完了させることができる。
【００８０】
また、障害復旧作業中に送信部１５０の送信優先度を動的に増加させることにより、送信部１５０は、障害が復旧した時点で、送信優先度を高く設定して再開できる。また、送信部１５０の優先度を動的に変更させることで、バッファ部１４０における電文の滞留、また、障害回復中に送信優先度を動的に増加させることにより、障害が回復した時点で高い送信優先度で処理を再開できる。
【００８１】
また、本実施例にかかる通信装置１００は、バッファ部１４０の滞留電文数、滞留電文長、電文滞留時間に応じて動的に送信部１５０の送信優先度を変更するので、送信優先度の事前設計が不要である。
【００８２】
また、本実施例にかかる通信装置１００は、電文の滞留が解消したと判定した場合には、送信部１５０の送信優先度を動的に減少させるので、ＣＰＵ資源の利用効率を向上させることができる。
【実施例３】
【００８３】
実施例２では、監視部１６１が閾値を用いて電文の滞留を判定する例について説明したが、これに限定されるものではなく、例えば、閾値を用いずに電文の滞留を判定してもよい。そこで、実施例３では、通信装置２００が閾値を用いずに電文の滞留を判定する場合について説明する。
【００８４】
[実施例３にかかる通信装置の構成]
次に、図１５を用いて、実施例３にかかる通信装置２００の構成を説明する。図１５は、実施例３にかかる通信装置の構成を示すブロック図である。実施例３にかかる通信装置２００は、記憶部２１０と、受信部１２０と、格納制御部１３０と、バッファ部１４０と、送信部１５０と、制御部２６０とを有する。なお、ここでは、図２に示した各部と同様の役割を果たす機能部については、同一符号を付すことにして、その詳細な説明を省略する。
【００８５】
記憶部２１０は、例えば、半導体メモリ素子、又はハードディスクなどの記憶装置であり、滞留状況記憶部１１１と優先度範囲記憶部２１２とを有する。優先度範囲記憶部２１２は、送信優先度の算出に必要な各種の値を記憶する。例えば、優先度範囲記憶部２１２は、図１６に示すように、「想定トランザクション量」と「送信部の数」と「最大１電文長」と「優先度範囲」と「最大優先度」と「デフォルト優先度」と「係数α」と「係数β」と「係数γ」とを記憶する。
【００８６】
図１６に示す優先度範囲記憶部２１２の「想定トランザクション量」は、想定される１秒当たりのトランザクション量を示す情報である。また、「送信部の数」は、通信装置２００が有する送信部１５０の数を示す情報である。また、「最大１電文長」は、１電文当たりに許容できる電文長を示す情報である。また、「優先度範囲」は、「最大優先度−デフォルト優先度」によって決定される値を示す情報である。また、「最大優先度」は、送信優先度の最大値を示す情報である。また、「デフォルト優先度」は、通常状態における送信優先度の設定値を示す情報である。
【００８７】
また、「係数α」は、「優先度範囲／（想定トランザクション量／通信部の数）」によって決定される値である。また、「係数β」は、「優先度範囲／（最大１電文長×想定トランザクション量／通信部の数）」によって決定される値である。また、「係数γ」は、「優先度範囲／（通信部の数／想定トランザクション量）」によって決定される値である。
【００８８】
具体的には、図１６に示す優先度範囲記憶部２１２は、「想定トランザクション量」が「６０」、「送信部の数」が「３」、「最大１電文長」が「３００」であることを示す情報を記憶する。また、優先度範囲記憶部２１２は、「優先度範囲」が「２０」、「最大優先度」が「２０」、「デフォルト優先度」が「０」であることを示す情報を記憶する。また、優先度範囲記憶部２１２は、「係数α」が「１」、「係数β」が「１／３００」、「係数γ」が「４００」であることを示す情報を記憶する。なお、図１６は、優先度範囲記憶部が格納する情報の一例を示す図である。また、上述した各種設定値は、通信装置２００が有する複数のバッファ部１４０間で共通である。
【００８９】
制御部２６０は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有する。制御部２６０は、監視部２６１と送信電文数制御部２６２と時間計測部１６３とを有する。例えば、制御部２６０は、ＡＳＩＣやＦＰＧＡなどの集積回路、又は、ＣＰＵやＭＰＵなどの電子回路である。
【００９０】
監視部２６１は、バッファ部１４０に存在する電文の滞留時間を監視する制御部である。監視部２６１は、バッファ部１４０を監視した時刻を取得し、取得した時刻から電文格納時刻の先頭ポインタが示す時刻を差し引いた時間を滞留時間として算出する。例えば、監視部２６１は、時間計測部１６３に現在時刻の取得を要求し、時間計測部１６３から現在時刻の通知を受付ける。監視部２６１は、取得した現在の時刻が「３：１２：５５」、電文格納時刻の先頭ポインタが示す時刻が「３：１２：４３」であった場合、電文滞留時間を「１２（秒）」として算出する。続いて、監視部２６１は、算出した電文滞留時間を滞留状況管理レコードに格納する。
【００９１】
同様に、監視部２６１は、バッファ部Ｂ１４２における電文滞留時間を算出し、算出した電文滞留時間を滞留状況管理レコードＢに格納する。また、同様に、監視部２６１は、バッファ部Ｃ１４３における電文滞留時間を算出し、算出した電文滞留時間を滞留状況管理レコードＣに格納する。
【００９２】
送信電文数制御部２６２は、監視部２６１によって監視されたバッファ部１４０の電文滞留状況に基づいて、送信部１５０の送信優先度を算出する制御部である。ここで、送信電文数制御部２６２は、計算式「送信優先度＝デフォルト優先度＋（α×滞留電文数＋β
×滞留電文長＋γ×電文滞留時間）／３」を用いて送信優先度を算出する。
【００９３】
具体例として、監視部２６１は、図１６に示す「デフォルト優先度」、「α」、「β」、「γ」と、図１０に示す「滞留電文数」、「滞留電文長」、「電文滞留時間」とを用いて送信優先度を算出する場合を説明する。また、図１０に示す「バッファ部識別子」、「滞留電文数」、「滞留電文長」、「電文滞留時間」は、バッファ部識別子に対応する滞留状況管理レコードから抜粋した値であると仮定する。なお、ここで、示す各値は、滞留状況管理レコードと同様であるため、説明は省略する。
【００９４】
送信電文数制御部２６２は、バッファ部Ａ１４１に対応する滞留状況管理レコードＡから「滞留電文数」が「５」、「滞留電文長」が「６４０」、「電文滞留時間」が「５００」であることを読み出し、読み出した値に基づいて、送信優先度を算出する。具体的には、送信電文数制御部２６２は、バッファ部Ａ１４１の送信優先度を「６６６９」と算出する。
【００９５】
送信電文数制御部２６２は、バッファ部Ｂ１４２に対応する滞留状況管理レコードＢから「滞留電文数」が「３０」、「滞留電文長」が「７６８０」、「電文滞留時間」が「２０００」であることを読み出し、読み出した値に基づいて、送信優先度を算出する。具体的には、送信電文数制御部２６２は、バッファ部Ｂ１４２の送信優先度を「２６６６８５」と算出する。
【００９６】
送信電文数制御部２６２は、バッファ部Ｃ１４３に対応する滞留状況管理レコードＣから「滞留電文数」が「１０」、「滞留電文長」が「１９２０」、「電文滞留時間」が「１０００」であることを読み出し、読み出した値に基づいて、送信優先度を算出する。具体的には、送信電文数制御部２６２は、バッファ部Ｃ１４３の送信優先度を「１３３３３８」と算出する。
【００９７】
続いて、送信電文数制御部２６２は、算出した送信優先度に基づいて、滞留状況管理レコードの送信優先度を更新する。また、ここでは、送信電文数制御部２６２は、算出した送信優先度の値を比較し、値の大きい順にタイムスライスを割り当てるものとして説明する。
【００９８】
送信電文数制御部２６２は、算出した送信優先度の値を比較し、値が最大値である場合に、滞留状況管理レコードの送信優先度を「高」に設定する。具体的には、送信電文数制御部２６２は、算出した送信優先度が「２６６６８５」であるバッファ部Ｂ１４２に対応する滞留状況管理レコードＢの送信優先度を「高」に更新する。また、送信電文数制御部２６２は、算出した送信優先度の値を比較し、値が最大値に次いで大きい値である場合に、滞留状況管理レコードの送信優先度を「中」に設定する。具体的には、送信電文数制御部２６２は、算出した送信優先度が「１３３３３８」であるバッファ部Ｃ１４３に対応する滞留状況管理レコードＣを「中」に更新する。また、送信電文数制御部２６２は、算出した送信優先度の値を比較し、値が最小値である場合に、滞留状況管理レコードの送信優先度を「低」に設定する。具体的には、送信電文数制御部２６２は、算出した送信優先度が「６６６９」であるバッファ部Ａ１４１に対応する滞留状況管理レコードＡを「低」に更新する。
【００９９】
また、送信電文数制御部２６２は、送信部１５０が有するプログラムにアクセスし、アクセスしたプログラムに記述された単位時間当たりの送信電文量を変更する。例えば、送信電文数制御部２６２は、送信部１５０に割り当てることができるタイムスライスが「１０」であった場合には、送信優先度が「高」である送信部Ｂ１５２にタイムスライスを「６」割り当てる。また、送信電文数制御部２６２は、送信優先度が「中」である送信部Ｃ１５３にタイムスライスを「３」割り当てる。また、送信電文数制御部２６２は、送信優先度が「低」である送信部Ａ１５１にタイムスライスを「１」割り当てる。
【０１００】
[実施例３にかかる監視部による処理の処理手順]
次に、図１７を用いて実施例３にかかる監視部２６１による処理の処理手順を説明する。図１７は、実施例３にかかる監視部２６１による処理の処理手順を示すフローチャートである。監視部２６１は、所定の時間が経過したと判定した場合（ステップＳ５０１、Ｙｅｓ）、先頭のバッファ部１４０を監視する（ステップＳ５０２）。監視部２６１は、現在の時刻を取得し（ステップＳ５０３）、滞留状況管理レコードの「電文滞留時間」を更新する（ステップＳ５０４）。
【０１０１】
監視部２６１は、監視しているバッファ部１４０が最終バッファ部であるか否かを判定する（ステップＳ５０５）。監視部２６１は、監視しているバッファ部１４０が最終バッファ部であると判定した場合には（ステップＳ５０５、Ｙｅｓ）、処理を終了する。一方、監視部２６１は、監視しているバッファ部１４０が最終バッファ部ではないと判定した場合には（ステップＳ５０５、Ｎｏ）、次のバッファ部を監視し（ステップＳ５０６）、最終バッファ部であると判定するまで、ステップＳ５０４以降の処理を繰り返す。
【０１０２】
[送信電文数制御部による処理の処理手順]
次に、図１８を用いて実施例３にかかる送信電文数制御部２６２による処理の処理手順を説明する。図１８は、実施例３にかかる送信電文数制御部２６２による処理の処理手順を示すフローチャートである。送信電文数制御部２６２は、１秒休止したと判定した場合には（ステップＳ６０１、Ｙｅｓ）、送信優先度を算出する（ステップＳ６０２）。続いて、送信電文数制御部２６２は、滞留状況管理レコードを更新し（ステップＳ６０３）、送信部１５０の送信優先度を変更する（ステップＳ６０４）。
【０１０３】
[実施例３の効果]
上述してきたように、本実施例３では、送信電文数制御部２６２は、送信優先度を算出し、算出した送信優先度に基づいて、送信部からの電文送信数を制御するので、厳密に送信優先度を変更することができる。この結果、通信装置２００は、滞留した電文を早期に送信完了させることができる。
【実施例４】
【０１０４】
ところで、本願の開示する電文送信制御プログラム、通信装置及び電文送信制御方法は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例４では、本願の開示する電文送信制御プログラム、通信装置及び電文送信制御方法の他の実施例について説明する。
【０１０５】
（システム構成等）
実施例において説明した各処理のうち自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。
【０１０６】
また、図示した記憶部に格納された情報は一例に過ぎず、必ずしも図示のごとく情報が格納される必要はない。例えば、実施例２において、閾値記憶部１１２が格納する「想定トランザクション量」、「送信部の数」、「最大１電文長」は、任意に変更可能である。また、通信装置の負荷状況に応じて閾値を変化させてもよい。
【０１０７】
実施例３において、優先度範囲記憶部２１２が格納する「想定トランザクション量」、「送信部の数」、「最大１電文長」、「優先度範囲」、「最大優先度」、「デフォルト優先度」は、任意に変更可能である。また、係数「α」、「β」、「γ」は固定値として説明したが、利用者が任意に選択する値を使用してもよい。
【０１０８】
監視部１６１及び監視部２６１は、バッファ部１４０を所定の順序で監視してもよく、また、複数もしくは全てのバッファ部を同時に監視してもよい。また、全てのバッファ部において、電文が滞留している場合には、滞留状況が最小のバッファ部に電文を格納するようにしてもよい。
【０１０９】
実施例２において、超えた閾値の数に基づいて、送信優先度を増加させる送信部を一つ選択するように説明した。また、実施例３において、算出した送信優先度の中から最も値の高い送信部を一つ選択して、送信優先度を増加させるように説明した。しかし、本願の開示する通信装置は、これに限定されず、任意の組み合わせで送信優先度を増加させる送信部を選択してもよい。
【０１１０】
実施例２において、通信装置は、送信優先度を「低」と「高」の２段階で変更するものとして説明した。しかし、送信優先度の設定方法はこれに限定されるものではない。例えば、実施例２にかかる通信装置は、「低」、「中」、「高」の３段階で送信優先度を設定してもよく、また、より多段階で送信優先度を設定してもよい。
【０１１１】
実施例３において、算出した送信優先度の値に基づいて、「低」、「中」、「高」の３段階で送信優先度を変更するものとして説明した。しかし、より多段階で送信優先度を設定してもよい。また、送信優先度に基づいて送信部が送信する電文の数の割り当てについては任意に変更可能である。
【０１１２】
また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されていることを要しない。例えば、通信装置１００は、監視部１６１と送信電文数制御部１６２とは統合されてもよい。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１１３】
（プログラム）
ところで、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。
【０１１４】
図１９は、電文送信制御プログラムを実行するコンピュータシステムを示す図である。図１９に示すように、コンピュータシステム３００は、ＲＡＭ３１０と、ＲＯＭ３３０と、ＣＰＵ３２０と、入力装置３４０と、出力装置３５０と、媒体読取装置３６０と、ネットワークインターフェース３７０とを有する。ここで、ＲＯＭ３３０には、上記実施例と同様の機能を発揮するプログラムを予め記憶されている。つまり、図１９に示すように、ＲＯＭ３３０には、滞留状況判定プログラム３３１と送信電文数制御プログラム３３２とが予め記憶されている。
【０１１５】
そして、ＣＰＵ３２０には、滞留状況判定プログラム３３１と送信電文数制御プログラム３３２とを読み出してＲＡＭ３１０に展開する。そして、ＣＰＵ３２０は、滞留状況判定プログラム３３１を滞留状況判定プロセス３２１として実行する。またＣＰＵ３２０は、送信電文数制御プログラム３３２を送信電文数制御プロセス３２２として実行する。なお、滞留状況判定プロセス３２１は、図２に示した監視部１６１に対応する。同様に、送信電文数制御プロセス３２２は、送信電文数制御部１６２に対応する。
【０１１６】
ところで、上記したプログラム３３１及び３３２は、必ずしもＲＯＭ３３０に記憶させておく必要はない。例えば、コンピュータシステム３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に記憶させておくようにしてもよい。また、コンピュータシステム３００の内外に備えられるハードディスクドライブ（ＨＤＤ）などの「固定用の物理媒体」に記憶させておいてもよい。さらに、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）などを介してコンピュータシステム３００に接続される「他のコンピュータシステム」に記憶させておいてもよい。そして、コンピュータシステム３００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１１７】
すなわち、このプログラムは、上記した「可搬用の物理媒体」、「固定用の物理媒体」、「通信媒体」などの記録媒体に、コンピュータ読み取り可能に記憶されるものである。そして、コンピュータシステム３００は、このような記録媒体からプログラムを読み出して実行することで上記した実施例と同様の機能を実現する。なお、この他の実施例でいうプログラムは、コンピュータシステム３００によって実行されることに限定されるものではない。例えば、他のコンピュータシステムまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【０１１８】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１１９】
（付記１）コンピュータに、
記憶部に記憶された電文を読み出し、読み出した電文を相手装置へ送信する送信手順と、
前記記憶部に記憶される電文の滞留状況を監視する監視手順と、
前記監視手順によって監視された滞留状況に基づいて、前記送信手順が送信する電文数を制御する送信電文数制御手順と
を実行させることを特徴とする電文送信制御プログラム。
【０１２０】
（付記２）前記監視手順は、前記記憶部に記憶される電文の総数を示す滞留電文数と、当該電文の総数の長さを示す滞留電文長と、前記記憶部の先頭に格納される電文の格納経過時間を示す電文滞留時間とのそれぞれについて監視し、
前記送信電文数制御手順は、前記監視手順による監視結果に基づいて、前記送信手順が単位時間当たりに送信する電文数を制御することを特徴とする付記１に記載の電文送信制御プログラム。
【０１２１】
（付記３）前記監視手順は、前記滞留電文数と滞留電文長と電文滞留時間とのそれぞれが、閾値を超えるか否かを監視することを特徴とする付記２に記載の電文送信制御プログラム。
【０１２２】
（付記４）前記送信電文数制御手順は、前記監視手順による監視結果が前記滞留電文数と滞留電文長と電文滞留時間の少なくとも一つが閾値を越える場合には、前記送信手順が単位時間当たりに送信する電文数を増やすことを特徴とする付記３に記載の電文送信制御プログラム。
【０１２３】
（付記５）前記送信電文数制御手順は、前記送信手順が単位時間当たりに送信する電文数を増やした後に、前記監視手順による監視結果が前記滞留電文数と滞留電文長と電文滞留時間とが閾値未満となった場合には、前記送信手順が単位時間当たりに送信する電文数を、増やす前の電文数に戻すことを特徴とする付記４に記載の電文送信制御プログラム。
【０１２４】
（付記６）前記送信電文数制御手順は、前記監視手順による監視結果である前記滞留電文数と滞留電文長と電文滞留時間とのそれぞれに基づいて、前記送信手順が単位時間当たりに送信する電文数を決定する送信優先度を算出し、算出した送信優先度に基づいて、前記送信手順が単位時間当たりに送信する電文数を変化させることを特徴とする付記２に記載の電文送信制御プログラム。
【０１２５】
（付記７）前記送信電文数制御手順は、前記監視手順によって算出された送信優先度が所定値以上である場合には、前記送信手順が単位時間当たりに送信する電文数を増やすことを特徴とする付記６に記載の電文送信制御プログラム。
【０１２６】
（付記８）前記送信電文数制御手順は、前記送信手順が単位時間当たりに送信する電文数を増やした後に、前記監視手順によって算出された送信優先度が所定値未満となった場合には、前記送信手順が単位時間当たりに送信する電文数を、増やす前の電文数に戻すことを特徴とする付記７に記載の電文送信制御プログラム。
【０１２７】
（付記９）送信対象となる電文を記憶する記憶部と、
前記記憶部に記憶された電文を読み出し、読み出した電文を相手装置へ送信する送信部と、
前記記憶部に記憶される電文の滞留状況を監視する監視部と、
前記監視部によって監視された滞留状況に基づいて、前記送信部が送信する電文数を制御する送信電文数制御部と
を有することを特徴とする通信装置。
【０１２８】
（付記１０）コンピュータが、
記憶部に記憶された電文を読み出し、読み出した電文を相手装置へ送信する送信ステップと、
前記記憶部に記憶される電文の滞留状況を監視する監視ステップと、
前記監視ステップによって監視された滞留状況に基づいて、前記送信ステップが送信する電文数を制御する送信電文数制御ステップと
を含んだことを特徴とする電文送信制御方法。
【符号の説明】
【０１２９】
１０  通信装置
１１  記憶部
１２  送信部
１３  監視部
１４  送信電文数制御部
１００  通信装置
１１０  記憶部
１１１  滞留状況記憶部
１１２  閾値記憶部
１２０  受信部
１３０  格納制御部
１４０  バッファ部
１４１  バッファ部Ａ
１４２  バッファ部Ｂ
１４３  バッファ部Ｃ
１５０  送信部
１５１  送信部Ａ
１５２  送信部Ｂ
１５３  送信部Ｃ
１６０  制御部
１６１  監視部
１６２  送信電文数制御部
１６３  時間計測部
２００  通信装置
２１０  記憶部
２１２  優先度範囲記憶部
２６０  制御部
２６１  監視部
２６２  送信電文数制御部
３００  コンピュータシステム
３１０  ＲＡＭ
３２０  ＣＰＵ
３２１  滞留状況判定プロセス
３２２  送信電文数制御プロセス
３３０  ＲＯＭ
３３１  滞留状況判定プログラム
３３２  送信電文数制御プログラム
３４０  入力装置
３５０  出力装置
３６０  媒体読取装置
３７０  ネットワークインターフェース
【図１】
0005552929.tif 000002
【図２】
0005552929.tif 000003
【図３】
0005552929.tif 000004
【図４】
0005552929.tif 000005
【図５】
0005552929.tif 000006
【図６】
0005552929.tif 000007
【図７】
0005552929.tif 000008
【図８】
0005552929.tif 000009
【図９】
0005552929.tif 000010
【図１０】
0005552929.tif 000011
【図１１】
0005552929.tif 000012
【図１２】
0005552929.tif 000013
【図１３】
0005552929.tif 000014
【図１４】
0005552929.tif 000015
【図１５】
0005552929.tif 000016
【図１６】
0005552929.tif 000017
【図１７】
0005552929.tif 000018
【図１８】
0005552929.tif 000019
【図１９】
0005552929.tif 000020
【図２０】
0005552929.tif 000021
【図２１】
0005552929.tif 000022