JP2006294046A - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP2006294046A JP2006294046A JP2006119875A JP2006119875A JP2006294046A JP 2006294046 A JP2006294046 A JP 2006294046A JP 2006119875 A JP2006119875 A JP 2006119875A JP 2006119875 A JP2006119875 A JP 2006119875A JP 2006294046 A JP2006294046 A JP 2006294046A
- Authority
- JP
- Japan
- Prior art keywords
- remote
- application
- class
- service
- machine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
- Telephonic Communication Services (AREA)
- Facsimiles In General (AREA)
- Storing Facsimile Image Data (AREA)
- Facsimile Transmission Control (AREA)
Abstract
【解決手段】プロセッサ40およびメモリ50を含むコンピュータ。システム1とコンピュータシステム1および複数のリモート・マシーン90に結合されたデータ通信手段70と、メモリ50内に格納されており、複数のリモート・マシーン90に対してサービスを記述するための第1の複数のソフトウェア・オブジェクトと、第1の複数のソフトウェア・オブジェクトと関連させてメモリ内50に格納されており、複数のソフトウェア・オブジェクトのサービスによって記述された要求を満たすための複数のオペレーションと、を具備する。
【選択図】 図1
Description
本発明の好ましい実施の形態は,本発明の譲受人(assignee) である株式会社リコーによって現在開発中のREST(Rich Electronic Service Tool) オブジェクト指向アプリケーション・フレームワークの一部を示している。オブジェクト指向アプリケーション・フレームワーク(以下,『フレームワーク』と記載する)は,複数のクラスのオブジェクトのデクラレーション(宣言)およびインプリメンテーション(具体的記述)を含むクラス・ライブラリと,これらのクラスを用いてかかれたサンプル・アプリケーション・プログラムとから構成されている。
以下,本発明で使用する用語の定義について説明する。
『コンポーネント』とは,あるリモート・マシーンのサービスおよび状態を示すソフトウェア・オブジェクトである。1つのコンポーネントは複数のサブ−コンポーネントを持っていても良く,例えば,コピー機はそれに取りつけられたソーターおよびフィーダーを持っていても良い。
以下は,本明細書中および添付ソフトウェア付属資料で用いられている命名上の規定の要約である。クラスの名称は大文字で表記し,内側の大文字はワードの開始を示している。大域的機能,変数およびクラスの名称は,1つから3つの接頭辞を有しており,それらが属する全体的なファミリーを示している。
1つのクラスの公的インタフェースの一部であるメンバー機能およびデータ・メンバーは小文字から始まる。保護データ・メンバーは下線で終わる名称を有しており,通常は,そのデータにアクセスする公的メンバー機能が存在し,その名称は同じであるが,下線を有していない。すなわち,データ・メンバーは『属性』(attribute)と呼ばれ,その名称が“R_ATTR”で始まるマクロを用いて宣言される。
次に,本発明の好ましい実施の形態について,
1.システム概要
1.1.システム構成
1.2.フレームワークの説明
1.3.サンプル・アプリケーション・プログラムとファイルに関する説明
2.マシーン・モデル・モジュール
2.1.概要
2.2.コンポーネントおよび関連オブジェクト
2.2.1.合成データ
2.2.2.リモート・マシーン・ヒストリー
2.2.3.新しいモデル・アイテムの定義
2.2.4.初期化
2.3.典型的なクラス・デスクリプタ
2.3.1.Serviceクラス
2.3.2.SI_ServiceItemクラス
2.3.3.SI_ModelItemクラス
2.3.4.SI_RemoteItemクラス
2.3.5.SI_MemoryItemクラス
2.3.6.SI_BitfieldItemクラス
3.通信モジュール
3.1.概要
3.2.詳細な説明
3.3.新しいセッション・タイプの定義
4.通信装置インタフェース
4.1.概要
4.2.詳細な説明
4.3.新しい装置の追加
5.追記
の順で,図面を参照して詳細に説明する。
1.1.システム構成
図1は,本発明の好ましい実施の形態によるコンピュータ・システム1の構成図である。コンピュータ・システム1は,表示モニター10,キーボード20,マウス30,およびコンピュータ2を含んでいる。
図2は,本発明の好ましい実施の形態で用いられるオブジェクト指向アプリケーション・フレームワークの構成図である。アプリケーション層140は,エンド・ユーザーによって実行されるリモート・セット(Remote Setting)100およびカスタマー・データベース・アクセス(Customer Database Access)130を含むアプリケーション・プログラムと,コール・アウト(Call−out)110およびコール・イン(Call−in)120等を含むオペレーティング・システムによって自動的に実行されるアプリケーション・プログラムによって構成されたシステムの一部である。
図3は,上記フレームワーク(図2)のアプリケーション層140におけるサンプル・アプリケーション・プログラムの一部と,それらが情報を交信するために用いるファイルを示している。全てのアプリケーション・プログラムおよびファイルは,好ましくはコンピュータ・システム1の大容量記憶装置60内に存在する。
2.1 概要
図2のマシーン・モデル・モジュール170は,コア層190内の主要モジュールである。マシーン・モデル・モジュールの目的は,マシーン・モデルと呼ばれるオブジェクトの構成の形態でリモート・サービス・アプリケーションがリモート・マシーン上で使えるサービスを記述すること,そして,アプリケーション・プログラムがそのリモート・マシーンおよび全てのオペレーション,そしてユーザーによって要求されたデータ伝送の現在の状態を追跡的に監視するために必要な情報を含み,組織することである。
Component リモート・マシーンを記述
Service
SerivceCollection サービス・アイテムの集合
SC_SericeModel コンポーネントのモデル
AC_AppServices コンポーネントのアプリケーション・アイテム
SC_Queue SC_QueueItemの集合
(および他の種々の特殊な目的の集合)
SI_ServiceItem リモート・サービスを記述
SI_ModelItem マシーン・モデル−−−記述のみ
SI_GuiItem 1つのアイテムを示すGUI要素
SI_AppItem 1つのアイテムに関するアプリケーション・ステート
SI_QueueItem 1つのアイテムに関するキューされた読み出しおよび書き込み
図4は,典型的なComponent700(コンピュータ・システム1のメモリ50内のリモート・マシーン90を示すオブジェクト・インスタンス),およびそれが参照するオブジェクトを示している。これらのオブジェクトには,図示の如く,その『状態』属性600であるSC_AppServicesオブジェクト,その『モデル』属性630であるSC_ServiceModelオブジェクト,そのWriteQueueおよびreadQueue属性670である各SC_Queueオブジェクト,およびその『セッション』属性710であるクラスSI_CommunicationSessionのサブクラスのインスタンスに対するリファレンスがある。
SI_ModelItem マシーン・モデル−−−記述のみ
SI_InternalItem アプリケーションに対して内部的
SI_ExternalItem 外部記憶またはサーバー
SI_DIrectoryItem ディレクトリ
SI_FileItem ファイル
SI_TableItem データベース・テーブル
SI_QueryItem データベース照会
SI_TupleItem データベース・タップル
SI_FieldItem データベース・フィールド
SI_RemoteItem リモート・マシーン
SI_MemoryItem リモート・メモリに保存
SI_BitfieldItem ワード内のビットフィールド
SI_ProgramItem リモート・プログラムによりアクセス
リモート・マシーン内の1つのサービス・アイテムが配列や構成等合成データ・ストラクチャでできている場合,それはその『子:チルドレン』としても知られている1つまたは複数の従属SI_ModelItemオブジェクトの集合(collection) を有するSI_ModelItemによって記述される。1つの配列を示すSI_ModelItemオブジェクトは,アレイ・アイテム・オブジェクトを記述する1つの子(チャイルド)を有しており,1つのストラクチャを示すSI_ModelItemは,各フィールドを記述する別の子(チャイルド)を有している。
オプションとして,1つのリモート・マシーンの経時データ(ヒストリー)は,経時データベース(図示せず)に格納するようにしても良い。経時データのタイプは,例えば,毎月コピー機で作成されるコピーの枚数,顧客が購入するオプション等を含んでいる。経時データを追跡確認するために,SI_AppItemは異なったコンポーネントの別のSI_AppItemを指示する属性“history”を有している。この異なったコンポーネントとは,通常,データベースやファイルを記述するものである。
上の説明で分かるように,アプリケーション・プログラマは,いずれのかの新しいリモート・マシーン,データベース,または他の外部リソースによって提供される新しい種類のサービス・アイテムを記述するために,クラスSI_ModelItemに対する新しいサブクラスを簡単に定義することができる。
アプリケーション・プログラムがあるリモート・マシーンと通信するためには,そのメモリ内にコンポーネントとその関連マシーン・モデルおよびアプリケーション・ステートとを有していなければならないことは,当業者にはすぐ分かる。
name=k50
$
SI_MemoryItem: ($
name=R17D4
defaultValue=BCD1:51
description=‘drmk50.dat#R17D4'
itemValueList=〔〕
features=S_FeatureSet: (SYSTEM RemoteSetting)
readOnly=-
msbFirst=+
isremote=+
bitOffset=0
offset=6100
label=‘NCU 13'
$)
SI_MemoryItem: ($
name=R17D5
defaultValue=BCD1:256
description = ‘drmk50.dat#R17D5'
itemValueList=〔〕
features= S_FeatureSet: (SYSTEM
RemoteSetting)
readOnly=-
msbFirst=+
isremote=+
bitOffset=0
offset=6101
label=‘NCU 14'
$)
SI_MemoryItem: ($
name=R17D6
defaultValue=BCD1:256
description=‘drmk50.dat#R17D6'
itemValueList=〔〕
features=S_FeatureSet:
SYSTEM
RemoteSetting)
readOnly=-
msbFirst=+
isremote=+
bitOffset=0
offset=6102
label=‘NCU 15'
・・・
name=FT8780
$
SI_CopierItem: ($
name=LampThermistor
writeDCode= ‘1302'
features=S_FeatureSet: (
ReadOnly
RemoteSetting)
msbFirst=-
writeInfcode= ‘16040070101'
isremote=+
offset=0
label=LampThermistor
separator=‘;'
IDCode= 〔〕
defaultValue=Nchars2:"00"
size_for _specify _data_length=2
description=〔〕
readOnly=-
bitOffset=0
readInfCode=‘16040070101'
size=2
readDcode=‘1302;'
$)
SI_CopierItem: ($
name= SC_ChargerLeak
writeDCode= ‘1302;'
features=S_FeatureSet: (
RemoteSetting
ScCall
msbFirst=-
writeInCode=‘32000930201'
isremote=+
offset=0
label=SC_ChargerLeak
separator=‘;'
IDCode= 〔〕
defaultValue=Nchars1_1:"0"
size_for _specify _data_length=2
description=〔〕
readOnly=-
bitOffset=0
readInfCode=‘32000930201'
size=1
readDCode=‘1302;'
$)
SI_CopierItem: ($
name=FusingTempADJ
writeDCode= ‘1304'
features=S_FeatureSet: (
ReadWrite
RemoteSetting)
msbFirst=-
writeInfCode= ‘51011050101'
isremote=+
offset=0
label=FusingTempADJ
separator=‘;'
IDCode= 〔〕
defaultValue=Nchars3s _16:"+00"
size_for _specify _data_length=2
description=〔〕
readOnly=-
bitOffset=0
readInfCode=‘51011050101'
size=1
readDCode=‘1302;'
$)
・・・
以下のC++コードは,マシーン・モデル・クラスの好ましい実施の形態の説明的なサブセットに関するクラス・デクラレーションによって構成されている。
サービス・クラスは,サービス・アイテムおよびサービス集合(collection) に関する一般的で抽象的なベース・クラスである。
Description :
R_ABSTRACT(Service, R Nameable);
public:
Pseudo-Attributes:
R_FUNC_RX(Service *, parent);
R_CONTAINER _IS(parent);
ツリーにおけるこのサービスのペアレント。このサービスがサービス・ツリーのルートにある場合(つまり,そのペアレントはコンポーネント)。"parent"はそのサービスがつくられた場合にセットされるか,あるいはチャイルドがそれに付加された場合に,ペアレント自身によってセットされる。
R_FUNC_RO_RC(R_Collection, children);
R_CONTENTS_IS(children);
このサービスのチルドレンを保有するための集合。1つの場所で初期化,消去できるようにするために,ここに置かれる。この下側はスペシャライズするためにサブクラス内で行われるダウンキャスティングが行われねばならないことを示している。
virtual void setValueAt(Rcad i,Rvalue const &nv);
virtual void setValueOf(RKey const&Key, Rvalue const&nv);
virtual void append(Rvalue const&nv);
parentSet を呼び出すことができるように,チルドレンを付加するオペレーションをオーバーライドする。
virtual Service *getChildByName(R_Symbol *nm)
サービス名が与えられたら,それに一致するチャイルドを見つける。ファスト・ルックアップを行うことができるサブクラス内にオーバーライドしなければならない。 virtual Component *component ( ) const;
コンポーネントがあった場合,このサービスが付加される。この内容のデクラレーションはそれが大文字でタイプされるまで(strongly typed) 遅らされる。これは,"S_TYPED _CHILDREN(child_type, collection_type )"によって行われる。
#define S_TYPED _CHILDREN(childType, collectionType) \
R_CONTENTS_INIT_NEW(collectionType, children);\
R_CHILDREN_ARE _TYPED(childType,collectionType, parentSet)
Service (R_Symbol &nm, Service *prnt = 0);
規則上,全てのServiceItem コンストラクタはその最初のアーギュメントとしての名称に関するレファレンスとその最後のアーギュメントしてのペアレントに対するポインタを含んでいる。
"parent ・ append (new Service(name, &parent))"
Service (R_Base const &o);
そのコピー・インストラクタを用いてサービスを構成する場合,通常ボトム・アップでツリーを構成するので,ペアレントは分からない。parentSet で行うアペンドにアサインされねばならない。
〜Service( );
代表された集合オペレーション:一つのサービスをペアレント・サービスに対して付加するオペレーションは,必要な場合,そのチャイルドの"parent"フィールドをセットしなければならない。
SI_ServiceItemクラスは,全てのサービス・アイテムに対して同じインタフェースを提供する。
public:
S_TYPED _CHILDREN (SI_ServiceItem,
RT_Table <SI_ServiceItem >);
このサービス・アイテムに関する情報をリターンする。この情報はそのアプリケーション(特徴)およびユーザー(ラベル,記述)に対するこのサービス・アイテムを記述するために用いられる。
R_ATTR_XX_RC(R_String, label);
ユーザーに対する表現のために表示し,
このServiceItem をラベルするために用いられるストリング。これはデフォールト名で,アプリケーションに特有の名称変更や言語上の翻訳から,その名称と違っている場合もある。
R_FUNC_GET (R_String *, description) ;
このサービスが何をするのかについての簡単な説明をするストリング。一般的に,この説明は,それが必要とされる前にそのアプリケーションのワーキング・メモリに保存されるのではなく,データベースまたはファイルでルック・アップされる。
R_FUNC_GET (S_featureSet *, features);
このサービスに関する一定のシンボリックな特徴をリターンする。
R_FUNC_GET(Rcard,offset);
そのペアレントに対する本アイテムのアドレスを(バイトで)リターンする。
R_FUNC_GET(Rcard,bitoffset);
それを含んでいるアイテムがある場合,その低オーダー・ビットに対する本アイテムのビットによるオフセットをリターンする。
R_FUNC_GET(Rcard, index);
ペアレントが同じアイテムの列である場合,そのペアレ ントにおけるこのアイテムのインデックス。さもなけれ ばゼロ。
R_FUNC_GET(Rcard, address);
通常それを含んでいるメモリ,ファイル等のスタートに関連したアイテムの絶対アドレス(バイト)。オフセット,インデックス,およびサイズから計算される。
以下の機能は,通常,デスクリプタ,特に,default-Value の値デスクリプタによって代表される。サイズや valueList 等の少数の機能が,SI_ModelItem の属性に よってオーバーライドされることができる。
R_FUNC_GET(Rvalue, defaultValue);
そのアイテムのデフォールト値。このデフォールト値の R_ValueDscr はこのアイテムの全てのインスタンスに対して用いられるデスクリプタである。
R_FUNC_GET (R_ValueDscr & ,defaultDscr);
デフォールト値デスクリプタ。"defaultValue ( )・dscr( )," と同じでなければならないが,効率のため(つまり,ユーザーがいくつかのレベルの間接的な方法で値全体をワインド・アップ・パシングしないようにするために),遅らされる。
R_FUNC_GET (Rcard, minSize);
R_FUNC_GET (Rcard, maxSize);
1つのアイテムの値をホールドするのに必要な,即ち,そのアイテムをリモート・マシーンのメモリに保存し,それをマシーンに送り,あるいはデータベース内に保存するために必要な最低および最大バイト数。
Rinvalidindex のmaxSize はそのサイズに関して上限のない可変長オブジェクトを示している。
R_FUNC_GET (Rcard,packedSize);
その値のホールドするのに必要なビット数。
R_FUNC_GET (Rcard, minWidth);
R_FUNC_GET (Rcard, maxWidth);
R_FUNC_GET (Rcard, minHeight);
R_FUNC_GET (Rcard, maxHeight);
プリントまたはディスプレイのために1つの値をストリングとして表現するのに必要な最小,および最大文字およびライン数。
R_FUNC_GET (Rvalue, minValue);
R_FUNC_GET (Rvalue, maxValue);
そのアイテムの最小および最大値。ストリング値化されたアイテムのRnullValueをリターン。
R_FUNC_GET (Rvalue, unit);
R_FUNC_GET (Rvalue, scaleFactor);
アイテム値の後に表示されるべき単位およびスケール・ファクタ。例えば,電圧の単位とそのスケール・ファクタはキロボルトで表された値の場合,Vと1000である。
R_FUNC_GET (R_Base *, valueList)
少数の名称のついた値をもったアイテムに対して用い得る値。数値でインデックスされ,符号名でキー入力された集合(collection) でなければならない。
R_FUNC_GET (Rbool, msbFirst);
バイト・オーダーリング
R_FUNC_GET (Rbool, readOnly);
そのリモート・マシーン上でアイテムが修正できない場合だけ有効。
ModelItemは,マシーンの記述の一部,つまり,そのプログラム上でのマシーンのモデルである。これはそのマシーンのカレント・ステートに関する情報は含んでおらず,どのようにしてステートを得られるか,そしでどんな値が使えるかについての情報を含んでいるだけである。基本的に,ModelItemはリモート・マシーンを呼び出したり,データベースを調べたりせずに,予め1つのアイテムについて知り得る全ての情報を含んでいる。
R_ABSTRACT (SI_ModelItem ,SI_ServiceItem);
public:
R_String *descriptionInit( );
記述をイニシャライズする。
R_ATTR_RW_RC(S_FeatureSet, features);
このアイテムの特徴
R_ATTR_R0 (Rcard,offset);
通常それを含んでいるマシーン・メモリ,ファイル,またはプロトコル・バッファのスタートに対するこのアイテムのアドレス
R_ATTR_R0 (Rcard, bitOffset);
それを含んでいるアイテムがあった場合,その低オーダー・ビットに対するこのアイテムのビット数でのオフセット
ほとんどのデクスクリプタ属性は,1つまたはそれ以上のレベルでValueDescriptor により代表される。必要な場合,一部はここでオーバーライドされる場合もあ
る。
R_ATTR_R0 (Rvalue,defaultValue);
そのアイテムのデフォールト値。デフォールト値デスクリプタはこのアイテムの全てのインスタンスに対して用いられるデスクリプタである。
R_FUNC_GET (R_ValueDscr & ,defaultDscr);
デフォールト値のデスクリプタ。
R_ATTR_RW (RBool, msbFirst);
バイト・オーダリング
R_ATTR_RW_RC(R_Base,itemValueList);
R_FUNC_GET (R_Base *,ValueList);
デスクリプタの中のローカル値をオーバーライドできるローカル値リスト
R_ATTR_RW (RCard, itemSize);
サイズに関するオーバーライド,アイテムがビットフィールドかストリングかによって,ビットまたはバイト
R_FUNC_GET (RCard, minSize);
R_FUNC_GET (RCard, maxSize);
R_FUNC_GET (RCard, packedSize);
SI_ RemoteItem はリモート・マシーン上のアイテムを読み出したり,アイテムを書き込んだりするためのオペレーションを含んでいるが,しかしながら,これらはプロトコル固有サブクラスにオーバーライドされる。これらのオペレーションはSI_ ModelItemに組み込まれるが,それはこれがSI_AppItem が参照するクラスだからである。SI_AppItem がアイテムとデータベース・アイテムをそれぞれ別に取り扱わねばならないかについて特別な理由はなく,例えば,あるマシーンはそれ自身のシリアル番号についてレポートし,他のマシーンがネームプレート上およびカスタマー・データベース内にだけシリアル番号を保存するようにしても差し支えない。なお,リモート・アクセス・オペレーションはSI_AppItem アーギュメントの形式をとり,これはそのためにその作業が行われているアプリケーション・アイテムである。SI_AppItem が"busy"とマークされれば,全てのオペレーションはすぐリターンされ,その作業が実際に行われる場合は,コールバック法が起動される。
R_FUNC_GET _IS(RBool, isRemote, rFalse);
このサービスが実際にリモート・マシーンに含まれている場合は有効。これは,ユーザーに対して,読み出しや書き込みを行うためには一定の時間がかかることを示唆するために用いることができる。
Virtual RBool updateParentNewValue(SI_AppItem *, RValue const & );
必要な場合,AppleItem のペアレントのNewValueを更新する。
Virtual RBool updateChildrenNewValue(SI_AppItem *,
RValue const & );
必要であれば,AppItem のペアレントのChildrenValue を更新
Virtual RBool updateParentCurrentValue(SI_AppItem *,
RValue const & );
必要であれば,AppItem のペアレントのcurrentValueを更新
Virtual RBool updateChildrenCurrentValue(SI_AppItem *,
RValue const & );
必要であれば,applItemのチルドレンのcurrentValueを更新
Virtual void writeOrEnqueue (SI_AppItem *app, RValue const &v, RBool mayQueue);
AppItem のカレント値を読み出したり,書き込んだりする。isRemote( ) およびmayQueueが両方とも有効であれば,オペレーションは実際にキューされる。
virtual void readNotify(SI_AppItem *app, RValue const &V,
R_Symbol *status) ;
Virtual void writeNotify (SI_AppItem *app, RValue const &V, R_Symbol *status) ;
値が適切なステータスで読み出されたり,書き込まれたりしたことをアプリケーション・アイテムに伝える(ゼロは全てがうまく行ったことを示す)。
これは,AppItem に値を保存することである。
Virtual void readEnqueue (SI_AppItem *app);
Virtual void writeEnqueue(SI_AppItem *app, RValue const &v); キュー入力を行う。
Virtual void readValue (SI_AppItem *app)
Virtual void writeValue(SI_AppItem *app, RValue const &v);
実際に読み出し,書き込みを行い,その結果をAppItem 伝える。キュー入力から呼び出される場合もある。デフォールトではreadValue がModelItem のdefaultValueをリターンし,writevalueがApplItemにその値が書き込まれたことを伝える。
virtual RCard readValueFromBuffer(SI_AppItem *app,R_Buffer const &buf, RCard buf_addr=0,RCard hdr_size=0);
virtual RCard writeValueIntoBuffer (SI_AppItem *app, RValue const &vR Buffer &buf, RCard buf_addr=0,
RCard hdr size=0);
バッファー上で読み出しまたは書き込みを行い,AppItemに通知する。
buf_ addr パラメータはそのマシーンのメモリ位置ゼロに対する{\em buffer }のスタート・アドレス。
hdr_sizeはバッファー内のいずれかのプロトコル・ヘッダー情報以下の buf_addrに対応する位置である。
virtual void initAppItem (class SI_AppItem *, RValue&) {}
AppItem のカレント値が初期化される必要がある場合,Si_AppItem がつくられると呼び出される。このルーチンはカレント値に対する任意の直接アクセスである。
SI_RemoteItemクラスは,リモート・マシーンによって実際に実行され,あるいは,リモート・マシーンに保存されたり,そこから検索されるサービス・アイテムに対するペアレント・クラスである。このクラスはメモリに基づくサービス・アイテムに関する実際のメモリ位置を示すと同時に,必要であれば,個々のビットに関する情報も含んでいる。リモート・マシーンが内容を保有している場合,このクラスはコンポーネントに対して,個々の名称および記述をデータ・ストラクチャの形式で提供する。同じアイテムの列は唯1つのアイテムを有しているだけである。
R_ABSTRACT (SI_RemoteItem, SI_ModelItem);
public:
R_ATTR_GET _IS(RBool, isRemote, rTrue);
R_ATTR_RW(RBool, readOnly);
Constructors:
SI_RemoteItem(R_Base const &o);
SI_RemoteItem(R_Symbol &nm, RValue const &dflt,
Service *prnt0)
SI_MemoryItemクラスは,リモート・マシーン上のメモリ内での位置を示すものである。背景の箇所でも述べたように,一部のリモート・マシーンはリモート・マシーン・メモリに対して直接のアクセスを可能にしている場合がある。
R_CONCRETE (SI_MemoryItem, SI_RemoteItem);
public:
Attributes:
R_FUNC_GET _IS(RCard, start, address() );
スタート・アドレス
Reading and writing :
virtual RBool updateChildrenNewValue(SI_AppItem *, RValue
const &);
virtual RBool updateChildrenCurrentValue(SI_AppItem *,
RValue const &);
Constructors:
R_COPY_ONSTRUCTOR SI_MemoryItem(R_Base const &o);
SI_MemoryItem(R_Symbol &nm,RValue const &dflt,RCard addr=0 Service *prnt=0);
SI_MemoryItem(R_Symbol &nm, RValue const &dflt, RCard
byteAdd , RCard bitAddr, Service *prnt=0) ;
SI_BitfieldItemクラスは,それを含むSI_MemoryItem内のビットフィールドを示している。このビット数は含んでいるメモリ・アイテムの低オーダー・ビットに関するものであり,最大32ビット長である。このビットフィールドのサイズ(packedSize) を指定するのは,デフォールト値のデスクリプタにまかせられる。
R_CONCRETE (SI_ BitfieldItem, SI_RemoteItem);
public:
R_FUNC_GET(RCard, minSize);
R_FUNC_GET(RCard, maxSize);
R_FUNC_GET(RCard, packedSize);
itemSizeがゼロでない場合,サイズを正しく計算するために,これらをオーバーライドしなければならない。
virtual void readOrEnqueue (SI_AppItem *app, RBool
mayQueue);
virtual void writeOrEnqueue
(SI_AppItem *app, RValue const &v,
RBool mayQueue);
virtual void readEnqueue (SI_AppItem *app);
virtual void writeEnqueue(SI_AppItem *app, RValue const &v); virtual RBool updateParentNewValue (SI_AppItem *,RValue
const &);
virtual RBool updateParentCurrentValue (SI_AppItem *,RValue const &);
3.1.概要
通信モジュール180は,マシーン・モデル・モジュール170を共同して,クラスSI_AppItemのインスタンスで“readRequest”および“newValueSet”オペレーションを実行することで行われるリクエストに従って,リモート・マシーン90上でオペレーションを実行したりデータにアクセスしたりする。
SI_CommunicationSession
SI_BufferedSession バッファーされたセッション
SI_MemorySession メモリに基づくセッション
SI_256BytesSession コール・セッションあたり 256バイト SI_CopierSession プログラムに基づいたセッション
SI_UnbufferedSession バッファーされないセッション
SI_DBSession データ・ベース・セッション
SI_CustAccessionSession カスタマー・データ・
ベース・アクセス
SI_HistorySession 経時データベース
TI TaskItem
TI_CommunicationItem 通信タスク・アイテム
TI_MemoryItem メモリに基づくタスク・アイテム
TI_ProgramItem プログラムに基づくタスク・アイテム TI_HistoryItem データ・ベース・タスク・アイテム
SI_DeviceCallBackクラスは,リモート・サービス・アプリケーションと外部プロセス,通信装置,またはリモート・マシーンとの間の非同期通信のための一組の抽象的プログラミング・インタフェースを含んでいる。こうした非同期入力または出力オペレーションはそれを実行するのに一定の時間がかかるので,このアプリケーションは単にリクエストを発行して,ユーザー・インタフェース・イベントを処理し続ける。このオペレーションの実行が完了すると,装置ドライバーは“connectDone”オペレーションを用いてそのアプリケーションを『コール・バック』する。
上の説明でわかるように,アプリケーション・プログラマは,どのリモート・マシーン,データベース,または他の外部資源との通信の新しい方法を記述するために,クラスSI_CommunicationSessionに対してサブクラスを簡単に定義することができる。そうしたサブクラスのためのコードを含んでいるライブラリとリンクされたどのアプリケーションも動作時にその新しいセッション・タイプを用いることができ,こうしたアプリケーションはリコンパイルする必要がなく,再リンクすれば良いだけである。新しいクラスをダイナミック・リンク・ライブラリ(DLL)内に入れることにより,適切に構成されたアプリケーションは,リンクされユーザーに提供された後でも新しいセッション・タイプを用いることができる。
4.1.概要
通信装置70は,それを通じてリモート・サービス・アプリケーションがリモート・マシーンと交信するための,モデム等コンピュータ・システムの周辺装置である。本発明の好ましい実施の形態においては,通信装置70はクラスCM_CommunicationDevicのサブクラスのインスタンス1100として,アプリケーション・プログラム内に表現される。
CM_Modem モデム
CM_CCA FAXのための通信アダプタ
CM_USACCA ... 256バイト・プロトコル用のアダプタ
CM_LADP ライン・アダプタ/マルチプレクサ
CM_DBACESS データベース用の装置
CM_DeviceManager
クラスCM_CommunicationDeviceは,モデム等の物理的な通信装置ばかりでなく,データベースおよびデータベース・サーバー等に対するアプリケーション・プログラミング・インタフェースにも関連した全ての属性およびオペレーションの全てを内蔵している。CM_CommunicationDeviceのインスタンスはリモート・マシーンの通信アドレス,そのリモート・マシーンに固有のプロトコル上の制約に関するリスト,そして,全ての装置に対してプログラミング・インタフェースを提供する仮想機能“initDevice”,“connect”,“read”,“write”および“disconnect”を含む属性を保有している。
上の説明で分かるとおり,アプリケーション・プログラマは,どの新しいリモート装置,データベース,あるいはその他の外部資源に対してそのプロトコルを定義するために,クラスCM_CommunicationDeviceに対するサブクラスを簡単に定義することができる。そうしたサブクラスのためのコードを含んだライブラリにリンクされたどのアプリケーションも動作時に新しいプロトコルを用いることができ,そうしたアプリケーションはリコンパイルする必要はなく,再リンクするだけでよい。新しいクラスをダイナミック・リンク・ライブラリ(DLL)に入れることによって,適切に構成されたアプリケーションは,リンクされ,ユーザーに渡された後でも新しいプロトコルを利用することができる。
前述したように本実施の形態では,その1つの具体的な実施の形態を参照して本発明についての説明を行った。リモート装置のモデリングを簡単に行うフレームワークに対して多くの変更,修正,および機能的拡張は簡単に想起でき,それらは本発明の他の実施の形態に含まれる。したがって,明細書および図面は,本発明を限定するものではなく,説明のためのものであるとみなされるべきである。しかしながら,特許請求の範囲に定義されるような本発明の精神と範囲を逸脱することなく,種々の修正,変更を行うことができるのは明らかなことである。
また,本特許開示の一部は,著作権保護の対象となる素材を含んでいる。著作権保有者は,この特許資料または特許開示の一部を特許商標特許ファイルあるいは記録に記載された通りにファクシミリ装置で複製することについては反対はしないが,それ以外に関しては著作権が適用される。
2 コンピュータ
10 表示モニター
20 キーボード
30 マウス
40 プロセッサ
50 メモリ
60 大容量記憶装置
70 通信装置
80 システム・バス
90 リモート・マシーン
140 アプリケーション層
170 マシーン・モデル・モジュール
180 通信モジュール(通信機能)
190 コア層
230,240 マシーン記述ファイル
260 インタフェース層
Claims (3)
- 複数の周辺装置と通信し、記憶手段を備えた情報処理装置において、
前記情報処理装置の前記記憶手段は,前記周辺装置に対して実行される機能を記述したオブジェクトと,前記オブジェクトの実行される機能によって記述された要求を満たすために前記周辺装置上で実行される複数の実行動作を行わしめる情報と,前記周辺装置の属性情報を記憶しており、
前記情報処理装置は、前記記憶手段に記憶されている属性データ、オブジェクトを利用して前記複数の周辺装置から任意の周辺装置と交信するためのデータ通信手段と,
を具備することを特徴とする情報処理装置。 - 属性情報には、前記オブジェクトに対するポインタと前記周辺装置内部でのデータ・アイテムの値に対応したカレント値を含んでいることを特徴とする請求項1に記載の情報処理装置。
- 前記属性情報には、読み出しリクエスト・フラッグと前記周辺装置に送られるべき値に関するペンディング・リクエストを記述するための新しい値を含んでいることを特徴とする請求項2に記載の情報処理装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/504,192 US5918051A (en) | 1995-07-19 | 1995-07-19 | Object-oriented communication system with support for multiple remote machine types |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8178814A Division JPH0950416A (ja) | 1995-07-19 | 1996-07-09 | 通信装置およびオブジェクト指向通信システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006294046A true JP2006294046A (ja) | 2006-10-26 |
Family
ID=24005233
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8178814A Pending JPH0950416A (ja) | 1995-07-19 | 1996-07-09 | 通信装置およびオブジェクト指向通信システム |
JP2006119875A Pending JP2006294046A (ja) | 1995-07-19 | 2006-04-24 | 情報処理装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8178814A Pending JPH0950416A (ja) | 1995-07-19 | 1996-07-09 | 通信装置およびオブジェクト指向通信システム |
Country Status (4)
Country | Link |
---|---|
US (2) | US5918051A (ja) |
EP (1) | EP0755006B1 (ja) |
JP (2) | JPH0950416A (ja) |
DE (1) | DE69637436T2 (ja) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785709B1 (en) * | 1995-04-28 | 2004-08-31 | Intel Corporation | Method and apparatus for building customized data and/or video conferencing applications utilizing prepackaged conference control objects |
US6691299B1 (en) * | 1995-07-19 | 2004-02-10 | Ricoh Company, Ltd. | Object-oriented communications framework system with support for multiple remote machine types |
AU734115B2 (en) * | 1997-05-08 | 2001-06-07 | Nvidia Corporation | Hardware accelerator for an object-oriented programming language |
US9098297B2 (en) * | 1997-05-08 | 2015-08-04 | Nvidia Corporation | Hardware accelerator for an object-oriented programming language |
US6330659B1 (en) * | 1997-11-06 | 2001-12-11 | Iready Corporation | Hardware accelerator for an object-oriented programming language |
US6512968B1 (en) * | 1997-05-16 | 2003-01-28 | Snap-On Technologies, Inc. | Computerized automotive service system |
US6393386B1 (en) * | 1998-03-26 | 2002-05-21 | Visual Networks Technologies, Inc. | Dynamic modeling of complex networks and prediction of impacts of faults therein |
US6477439B1 (en) * | 1998-04-03 | 2002-11-05 | Johnson Controls Technology Corporation | Method of programming and executing object-oriented state machine logic in a controller |
US6370436B1 (en) | 1999-03-26 | 2002-04-09 | Emware, Inc. | Distributed objects for a computer system |
US6880126B1 (en) | 1999-08-03 | 2005-04-12 | International Business Machines Corporation | Controlling presentation of a GUI, using view controllers created by an application mediator, by identifying a destination to access a target to retrieve data |
WO2001013583A2 (en) | 1999-08-16 | 2001-02-22 | Iready Corporation | Internet jack |
US6779177B1 (en) | 1999-10-28 | 2004-08-17 | International Business Machines Corporation | Mechanism for cross channel multi-server multi-protocol multi-data model thin clients |
US7181686B1 (en) | 1999-10-29 | 2007-02-20 | International Business Machines Corporation | Selecting screens in a GUI using events generated by a set of view controllers |
US6862686B1 (en) | 1999-10-29 | 2005-03-01 | International Business Machines Corporation | Method and apparatus in a data processing system for the separation of role-based permissions specification from its corresponding implementation of its semantic behavior |
US6810422B1 (en) | 2000-01-14 | 2004-10-26 | Lockheed Martin Tactical Defense Systems | System and method for probabilistic quality of communication service determination |
US6704805B1 (en) * | 2000-04-13 | 2004-03-09 | International Business Machines Corporation | EJB adaption of MQ integration in componetbroker |
FR2813471B1 (fr) * | 2000-08-31 | 2002-12-20 | Schneider Automation | Systeme de communication d'un equipement d'automatisme base sur le protocole soap |
US7039717B2 (en) * | 2000-11-10 | 2006-05-02 | Nvidia Corporation | Internet modem streaming socket method |
JP3692932B2 (ja) * | 2000-12-13 | 2005-09-07 | 株式会社デンソー | 情報提供機能を備えた車両用制御装置及び記録媒体 |
US7379475B2 (en) * | 2002-01-25 | 2008-05-27 | Nvidia Corporation | Communications processor |
US7251611B2 (en) | 2001-03-14 | 2007-07-31 | International Business Machines Corporation | Method and system for determining an economically optimal dismantling of machines |
US7003774B2 (en) * | 2001-07-16 | 2006-02-21 | Smartmatic | Multidimensional advanced adaptive software architecture |
US7856660B2 (en) * | 2001-08-21 | 2010-12-21 | Telecommunication Systems, Inc. | System for efficiently handling cryptographic messages containing nonce values |
US20030126196A1 (en) * | 2001-12-27 | 2003-07-03 | Todd Lagimonier | System for optimizing the invocation of computer-based services deployed in a distributed computing environment |
US6976244B2 (en) * | 2002-01-09 | 2005-12-13 | International Business Machines Corporation | Method, system, and product for storage of attribute data in an object oriented environment |
US7363363B2 (en) * | 2002-05-17 | 2008-04-22 | Xds, Inc. | System and method for provisioning universal stateless digital and computing services |
US20040093287A1 (en) * | 2002-11-08 | 2004-05-13 | Barun Gupta | Method for optimal demanufacturing planning |
US7761921B2 (en) * | 2003-10-31 | 2010-07-20 | Caterpillar Inc | Method and system of enabling a software option on a remote machine |
US8549170B2 (en) * | 2003-12-19 | 2013-10-01 | Nvidia Corporation | Retransmission system and method for a transport offload engine |
US7624198B1 (en) | 2003-12-19 | 2009-11-24 | Nvidia Corporation | Sequence tagging system and method for transport offload engine data lists |
US7899913B2 (en) * | 2003-12-19 | 2011-03-01 | Nvidia Corporation | Connection management system and method for a transport offload engine |
US7260631B1 (en) | 2003-12-19 | 2007-08-21 | Nvidia Corporation | System and method for receiving iSCSI protocol data units |
US8065439B1 (en) | 2003-12-19 | 2011-11-22 | Nvidia Corporation | System and method for using metadata in the context of a transport offload engine |
US8176545B1 (en) | 2003-12-19 | 2012-05-08 | Nvidia Corporation | Integrated policy checking system and method |
US7249306B2 (en) * | 2004-02-20 | 2007-07-24 | Nvidia Corporation | System and method for generating 128-bit cyclic redundancy check values with 32-bit granularity |
US7206872B2 (en) * | 2004-02-20 | 2007-04-17 | Nvidia Corporation | System and method for insertion of markers into a data stream |
AU2005234496A1 (en) * | 2004-04-12 | 2005-10-27 | Xds, Inc | System and method for automatically initiating and dynamically establishing secure internet connections between a fire-walled server and a fire-walled client |
US7698413B1 (en) | 2004-04-12 | 2010-04-13 | Nvidia Corporation | Method and apparatus for accessing and maintaining socket control information for high speed network connections |
US7957379B2 (en) * | 2004-10-19 | 2011-06-07 | Nvidia Corporation | System and method for processing RX packets in high speed network applications using an RX FIFO buffer |
JP2006330945A (ja) * | 2005-05-25 | 2006-12-07 | Matsushita Electric Ind Co Ltd | デバイスの遠隔監視・修復システム |
EP2527990B1 (en) * | 2006-02-17 | 2020-01-15 | Google LLC | Using distributed models for machine translation |
US8140978B2 (en) * | 2008-01-16 | 2012-03-20 | International Business Machines Corporation | System and method for providing information in a virtual world |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4407016A (en) * | 1981-02-18 | 1983-09-27 | Intel Corporation | Microprocessor providing an interface between a peripheral subsystem and an object-oriented data processor |
US5371895A (en) * | 1985-10-08 | 1994-12-06 | The Foxboro Company | Local equipment controller for computerized process control applications utilizing language structure templates in a hierarchical organization and method of operating the same |
ATE121208T1 (de) * | 1990-01-30 | 1995-04-15 | Johnson Service Co | Vernetztes betriebsmittelverwaltungssystem. |
US5168441A (en) * | 1990-05-30 | 1992-12-01 | Allen-Bradley Company, Inc. | Methods for set up and programming of machine and process controllers |
US5297279A (en) * | 1990-05-30 | 1994-03-22 | Texas Instruments Incorporated | System and method for database management supporting object-oriented programming |
DE69126857T2 (de) * | 1991-01-18 | 1998-01-08 | Ibm | Objektorientierte Programmierungsplattform |
CA2079351A1 (en) * | 1992-02-19 | 1993-08-20 | Bruce A. Tate | Scaled depiction of information from a database |
US5379432A (en) * | 1993-07-19 | 1995-01-03 | Taligent, Inc. | Object-oriented interface for a procedural operating system |
US5404529A (en) * | 1993-07-19 | 1995-04-04 | Taligent, Inc. | Object-oriented interprocess communication system interface for a procedural operating system |
WO1995004968A1 (en) * | 1993-08-03 | 1995-02-16 | Forte Software, Inc. | Flexible multi-platform partitioning for computer applications |
US5453933A (en) * | 1993-09-08 | 1995-09-26 | Hurco Companies, Inc. | CNC control system |
US5568639A (en) * | 1993-11-24 | 1996-10-22 | Menai Corporation | Method and apparatus for providing an object-oriented file structuring system on a computer |
US5548723A (en) * | 1993-12-17 | 1996-08-20 | Taligent, Inc. | Object-oriented network protocol configuration system utilizing a dynamically configurable protocol stack |
US5548779A (en) * | 1993-12-21 | 1996-08-20 | Taligent | System for providing system services for a device to a client using stack definition and stack description of a stack having top, intermediate, and bottom service objects |
US5421009A (en) * | 1993-12-22 | 1995-05-30 | Hewlett-Packard Company | Method of remotely installing software directly from a central computer |
US5583983A (en) * | 1994-11-17 | 1996-12-10 | Objectware, Inc. | Multi-platform object-oriented software development and deployment system |
US5832264A (en) * | 1995-07-19 | 1998-11-03 | Ricoh Company, Ltd. | Object-oriented communications framework system with support for multiple remote machine types |
-
1995
- 1995-07-19 US US08/504,192 patent/US5918051A/en not_active Expired - Lifetime
-
1996
- 1996-07-09 JP JP8178814A patent/JPH0950416A/ja active Pending
- 1996-07-17 EP EP96111543A patent/EP0755006B1/en not_active Expired - Lifetime
- 1996-07-17 DE DE69637436T patent/DE69637436T2/de not_active Expired - Lifetime
-
1999
- 1999-01-21 US US09/234,595 patent/US6438617B1/en not_active Expired - Fee Related
-
2006
- 2006-04-24 JP JP2006119875A patent/JP2006294046A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
DE69637436T2 (de) | 2009-03-05 |
EP0755006B1 (en) | 2008-02-20 |
JPH0950416A (ja) | 1997-02-18 |
DE69637436D1 (de) | 2008-04-03 |
EP0755006A3 (en) | 1997-12-03 |
US5918051A (en) | 1999-06-29 |
EP0755006A2 (en) | 1997-01-22 |
US6438617B1 (en) | 2002-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4393596B2 (ja) | 情報処理装置 | |
JP2006294046A (ja) | 情報処理装置 | |
JP2006277758A (ja) | 通信方法 | |
McKusick et al. | The design and implementation of the 4.4 BSD operating system | |
AU691031B2 (en) | System and method for providing interoperability among heterogeneous object systems | |
CA2046723C (en) | Distributed computing system | |
US6957439B1 (en) | Method, system, and program for mapping objects in different language formats | |
US6675230B1 (en) | Method, system, and program for embedding a user interface object in another user interface object | |
US6854123B1 (en) | Method, system, and program for mapping standard application program interfaces (APIs) to user interface APIs | |
US6941520B1 (en) | Method, system, and program for using a user interface program to generate a user interface for an application program | |
JPH06231022A (ja) | コンピュータシステムに用いる名前スペースの一部分を別の名前スペースの一部分として利用可能にするための装置及びその方法 | |
JPH08339355A (ja) | 分散形システムでの処理タスク実行呼び出し方法及び装置 | |
JP2009076080A (ja) | ファイルオブジェクトおよび非ファイルオブジェクトをあたかもファイルのように転送する方法およびコンピュータシステム | |
US7681207B2 (en) | Methods of factoring operating system functions, methods of converting operating systems, and related apparatus | |
US6691299B1 (en) | Object-oriented communications framework system with support for multiple remote machine types | |
US7334235B2 (en) | Operating system application programming interfaces and methods of using operating systems | |
EP1121637A1 (en) | Component-based source code generator | |
Pautet et al. | GLADE users guide | |
Fröhlich et al. | Epos: An object-oriented operating system | |
JP2000311129A (ja) | 周辺装置管理システム | |
Brill | CodeNotes for C | |
Wain et al. | A Java GUI and distributed CORBA client-server interface for a coastal ocean model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080805 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081006 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081202 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090126 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090317 |