1 Ekim 2018 Pazartesi

HLA RTIambassador Arayüzü - Federation Restore Kabiliyeti

Giriş
Yazının ismi RTIambassador Arayüzü ancak hem RTIambassador hem de FederateAmbassador çağrılarını gösteriyor.

requestFederationRestore metodu
Federate için çağrı sırası şöyle.
requestFederationRestore (String label)  -> RTI - 1
requestFederationRestoreSucceded (String label) <- RTI - 2
requestFederationRestoreFailed (String label) <- RTI - 2
federationRestoreBegun () <- RTI - 3
initiateFederateRestore (String label, String federateName) <- RTI - 4
federationRestoreComplete() -> RTI - 5
federationRestoreNotComplete() -> RTI - 5
federationRestored() <- RTI - 6
federationNotRestored () <- RTI - 6
Bu çağrının sonucunda RTI requestFederationRestoreSucceded() metodu ile restore işlemine başlayabileceğini belirtir. Eğer başlayamayacaksa requestFederationRestoreFailed() çağrısını yapar ve akış burada biter.

Federation Save işleminde RTI save işlemine başlayıp başlayamayacağını belirtmiyor. restore işleminde neden bu yapıya ihtiyaç duyulmuş bilmiyorum. Sanırım RTI kendi içinde tutarlılık kontrolleri yapıyor diye düşünüyordum. Ancak save edilmemiş bir labe ile çağrılsa bile bu metod hata dönmüyor!

FederateAmbassador.federationRestoreBegun metodu
HLA thread'i içinde çalılır. Bu metod içinde genellikle bir  başka thread'e Command gönderilir. Yani Command Örüntüsü kullanılır.

RTI'dan bu çağrıyı aldıktan sonra uygulamanın HLA mesajları göndermemesi gerekir. Özellikle yavaş olan katılımcıların bu çağrıdan sonra bir şekilde hesaplama yapmayı durdurması gerekir. Çünkü yapacağı işlemler muhtemelen çöpe gidecektir.

Ben bu kullanım şeklini çok pratik bulmuyorum çünkü hesaplamanın ortasında işlemi bölmek mümkün olmayabilir. Daha pratik bir kullanım şeklinde tüm hesaplamaları halen göndermek ve alıcı tarafta bir kuyrukta biriktirmek olabilir.

FederateAmbassador initiateFederateRestore metodu
HLA thread'i içinde çalılır.  Bu metod içinde genellikle bir  başka thread'e Command gönderilir. Yani Command Örüntüsü kullanılır.

Bu çağrının parametrelerinden bir tanesi federateName. Bu parametre neden gerekli bilmiyorum. Bu çağrı sonucunda  katılımce eski veriyisine geri döner. Eğer geriye sarma işlemi başarılı ise federationRestoreComplete() metodunu çağırır. Başarılı değilse federationRestoreNotComplete() metodunu çağırır.

Tüm katılımcıların geriye sarma işlemi başarılı ise RTI federationRestored() metodunu çağırır. Başarılı değilse federationNotRestored() metodunu çağırır.

Federation Restore işlemi devam ederken updateAttributeValues() çağrısı yapılırsa hla.rt.1516e.exceptions.RestoreInProgress fırlatılır.

FederateAmbassador federationNotRestored  metodu
Hata kodu FEDERATE_REPORTED_FAILURE_DURING_RESTORE olabilir.



Hiç yorum yok:

Yorum Gönder