前の記事で、私はシミュレータを作成して構成することになりました。 それを実行する方法を検討してください...
シミュレーターの起動
一方で開始するのは簡単ですが、他方ではいくつかの魔法があります。 「たくさん知っている」なら理解できます:)
しかし、記事と例の目的は
libuniset2を使用したシステムの作成と操作の単純さを示すことであるため、あまり詳しく説明しません。 しかし、一般原則はまだ説明する必要があります(
ただし、その最初の記事で部分的に概説されていました )
プロセス(ユニセットオブジェクト)が相互にやり取りできるように、それらは(プロジェクト内で)一意の識別子を持っていますが、これは十分ではありません:)彼らは何らかの形で自分自身を宣言する必要があります。 これを行うには、リポジトリを使用します。 一般に、これらはすべてCORBAテクノロジーに根ざしています。 この場合、libuniset2はlibomniORB(
AT&T CORBA実装 )の一部であるomniNamesリポジトリ(ネームサービス)
実装を使用します。
そして、ローカルセットアップのもう1つの機能について説明します。 なぜなら 多くの開発者が1つのプロジェクト(1つのサーバー)で作業でき、誰もが
SharedMemoryプロセスの独自のインスタンスを実行したいので、何らかの方法でそれらを一緒に分離する必要があります。 これを行うには、すべてのプロセスインスタンスが異なるポートで起動されます。 しかし、各ユーザーのポートの一意性をどのように保証するのでしょうか?
libunisetでは 、次のように進みました:USERID + 50000に等しいポートでプロセスを開始し、これをすべて、誰とも交差しない「比較的信頼できる」領域にシフトします。 そして、これらはすべてローカルセットアップにのみ関係します。 なぜなら (コントローラー上の)実際のシステムでは、プロセスは既に1つのコピーで実行されています。
このデバッグはすべて、
libuniset2-utils パッケージで提供されるいくつかの
uniset2-start.shおよび
uniset2-stop.shスクリプトに隠されてい
ます 。 したがって、シミュレータを実行するには(誰にも邪魔されないように)、
uniset2-start.shを使用して実行する必要があります。 また、キーを含む行を毎回書き込まないようにするために、次の内容の
ファイルstart_fg.shがImitatorディレクトリに作成されました。
-fオプションは、プログラムをフォアグラウンドで実行することを意味します。
起動時の
uniset2-start.shユーティリティは、ポートをシフトするために必要なパラメータ(
--uniset-port xxx )を置き換えるだけです。
さらに、ネームサービス(リポジトリ)がまだ実行されていない場合は起動します。 操作(デバッグ)中に、ネームサービス(
omniNames )を一度開始するだけで十分です。
どうやらそれについて話す必要があるようですが、..リポジトリ
リポジトリは、DNSサーバーに似た機能を実行する「プログラム」です。 これは通常、CORBAオブジェクトのネームサービスです。 簡単な方法で、各オブジェクトがリポジトリに登録されている場合、そのオブジェクトへのCORBAリンクを(一意の)名前で公開します。 その後、このオブジェクトにアクセスする必要があるすべての人が、リポジトリから名前でリンクを要求すると、彼らはすでにこのリンクで作業します。 一般に、CORBAネームサービスは、より複雑なトピックです(DNSのように、それらから階層とコングロマリットを構築できます)など。このアプリケーションでは、すべてがより単純です。 OmniNamesが起動します(これは実際にはリポジトリプログラムです)。 特定のポートで実行されます。 リポジトリは、現在のすべてのユニセットプロジェクトに対して単独で起動され、相互に干渉しません。 各プロジェクトは、プロジェクトと呼ばれるルートから始まる独自のオブジェクト階層を作成します。これは、configure.xmlでパラメーター
RootSection = ".."で設定されます。
実際のプロジェクトでは、リポジトリなしで実行できますが、オブジェクトへのリモートアクセスは利用できません。ユニセットプロジェクトの起動の詳細は、プロジェクトのリポジトリ構造を「一度」作成する必要があるということです。 このために、別の特別な(多機能)ユーティリティ
-uniset2-adminがありますこのユーティリティは他の目的にも使用しますが、ここでリポジトリを作成する必要があります。
このための完全なコマンドは次のようになります。
uniset2-start.sh uniset2-admin --confile configure.xml --create
ただし、このプロセスを容易にするために、ソースにはディレクトリ
src / Services / Administatorがあり、クイック起動用の「コマンドリンク」があります。
createコマンドもあり
ます 。 それを実行し、すべてが正常であれば、エラーは表示されません
[pv@pvbook Administrator]$ ./create [pv@pvbook Administrator]$
1つの詳細があります。スクリプトは、
src / Services / Administatorディレクトリに入り、
そこでcreateを実行
するように設計されています(現在のディレクトリでconfigure.xmlファイルを探すだけです)。
リポジトリが作成されたことを確認するには、同じ
場所で「
./exist 」コマンドを実行(必要)し、次を参照します。
画面出力 [pv@pvbook Administrator]$ ./exist ||=======******** UNISET-EXAMPLE/Services ********=========|| !!!!!! ||=======******** UNISET-EXAMPLE/Controllers ********=========|| !!!!!! ||=======******** UNISET-EXAMPLE/Objects ********=========|| !!!!!! [pv@pvbook Administrator]$
出力からわかるように、unisetはリポジトリ内に
Services 、
Controllers 、
Objectsの 3つのセクションを作成します。 実際には4つ、4つ目は
sensorですが、ここでは表示されません。後で作業します:)
SharedMemoryを起動します
シミュレーターを実行する前に、「リポジトリー」
-SharedMemoryを実行する必要があります。 すでにリポジトリを作成しているので、
src / SharedMemory /ディレクトリに移動して
start_fg.shを実行すると、画面に表示されるはずです。
[pv@pvbook SharedMemory]$ ./start_fg.sh SharedMemory1(sysCommand): wait activate... ************************** activate: 1 msec
SMが作業に使用できることを確認するには、(別のコンソールで)
src / Services / Administratorディレクトリに
移動し、 .
/ existを実行し
ます 。 表示されるはずです:
画面出力 [pv@pvbook Administrator]$ ./exist ||=======******** UNISET-EXAMPLE/Services ********=========|| !!!!!! ||=======******** UNISET-EXAMPLE/Controllers ********=========|| (22000 )SharedMemory1 <--- exist ok ||=======******** UNISET-EXAMPLE/Objects ********=========|| !!!!!! [pv@pvbook Administrator]$
だからすべてが大丈夫です。
シミュレーターの起動
最後に、シミュレーターを実行します。 すでに推測できるように、
src / Algorithms / Imitator ディレクトリに移動して、。
/ start_fg.shを実行し
ます [pv@pvbook Imitator]$ ./start_fg.sh 04/03/2016 01:24:32( info): Imitator1(waitSM): waiting SM ready 60000 msec testID=101 04/03/2016 01:24:33(level8): Imitator1(resetMsg): reset messages..
シミュレーターがすでに機能していることを確認するには、(別のコンソールで)
src / Services / Administratorディレクトリーに移動して実行します。
/存在する画面出力 [pv@pvbook Administrator]$ ./exist ||=======******** UNISET-EXAMPLE/Services ********=========|| !!!!!! ||=======******** UNISET-EXAMPLE/Controllers ********=========|| (22000 )SharedMemory1 <--- exist ok ||=======******** UNISET-EXAMPLE/Objects ********=========|| (20001 )Imitator1 <--- exist ok [pv@pvbook Administrator]$
そのため、すでにSMとImitatorをリリースしています。 これはシミュレータのデバッグを開始するのに十分であり、この例では、これに使用できるツールを確認します。 それでも、セットアップを説明する前に、メイン管理プロセスを作成します...
次の部分で ...興味のある方へ: