libuniset2-ACSを作成するためのライブラリ。 一度見たほうがいい...パート2(シミュレーターの実行)

前の記事で、私はシミュレータを作成して構成することになりました。 それを実行する方法を検討してください...



シミュレーターの起動



一方で開始するのは簡単ですが、他方ではいくつかの魔法があります。 「たくさん知っている」なら理解できます:)

しかし、記事と例の目的は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ディレクトリに作成されました。

#!/bin/sh uniset2-start.sh -f ./imitator
      
      





-fオプションは、プログラムをフォアグラウンドで実行することを意味します。

起動時のuniset2-start.shユーティリティは、ポートをシフトするために必要なパラメータ( --uniset-port xxx )を置き換えるだけです。

さらに、ネームサービス(リポジトリ)がまだ実行されていない場合は起動します。 操作(デバッグ)中に、ネームサービス( omn​​iNames )を一度開始するだけで十分です。 どうやらそれについて話す必要があるようですが、..



リポジトリ


リポジトリは、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はリポジトリ内にServicesControllersObjectsの 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をリリースしています。 これはシミュレータのデバッグを開始するのに十分であり、この例では、これに使用できるツールを確認します。 それでも、セットアップを説明する前に、メイン管理プロセスを作成します... 次の部分で ...



興味のある方へ:




All Articles