24 Eylül 2019 Salı

HLA RTIambassador Arayüzü - Federation Synchronization

Giriş
Senkronizasyon noktası tüm federeler synchronizationPointAchieved() çağrısını yapınca geçilir.

registerFederationSynchronizationPoint metodu - String
Federate için çağrı sırası şöyle. Birinci parametre point ismi, ikinci parametre tag verisidir. Tag verisinin ne işe yaradığını bilmiyorum.

- RTIambassador tarafından yapılan çağrılar koyu mavi renkte gösteriliyor.
 -NullFederateAmbassador tarafından yapılan callback'ler ise açık mavi renkte gösteriliyor.
void registerFederationSynchronizationPoint (String,byte[],FederateHandleSet)  -> RTI - 1
synchronizationPointRegistrationSucceeded () <- RTI - 2
announceSynchronizationPoint ()  <- RTI - 3
void synchronizationPointAchieved (String,boolean)  -> RTI - 4
federationSynchronized ()  <- RTI - 5
2. RTI ismini belirttiğimiz "Synchronization Point" nesnesinin başarıyla yaratıldığını belirtir
3. RTI ismini belirttiğimiz "Synchronization Point" nesnesini ilan eder. Callback bizim uygulamamıza da gelir.
4. Uygulamamız ismini belirttiğimiz "Synchronization Point" noktasına ulaştığını bildirir.
5. RTI ismi belirtilen "Synchronization Point" noktasına herkesin ulaştığını bildirir

Açıklaması şöyle.
When you want to synchronize only a subset of federates, specify the set of federate handles as a parameter in the call. In case you don't provide a federate list, then it implies that synchronization is intended for all the (joined) federates
Örnek
HLA örnek uygulamalarında başlatma aşamasındaki kullanım şöyle.

- Simülasyonlar teker teker çalıştırılır. Hepsi synchronizationPointAchieved () çağrısı
yapıp federationSynchronized () callback'i beklerler.

- Manager uygulama registerFederationSynchronizationPoint () çağrısı yapar. Beklenen tüm federelerin bağlandığını tesbit ettikten sonra synchronizationPointAchieved () çağrısı yapar. Tüm federeler federationSynchronized () callback'i tetiklenip devam ederler.

Örnek
Senaryo koşarken kullanım şekli şöyle.

- Simülasyonlar synchronizationPointAchieved () çağrısı yapıp federationSynchronized () callback'i beklerler. Burada Manager uygulamanın federe sayısını kontrol etmesine gerek yok.



Hiç yorum yok:

Yorum Gönder