5 Eylül 2018 Çarşamba

HLA RTIambassador Arayüzü - Object Management

Giriş
Açıklaması şöyle.
Registering and discovering object instances, updating and reflecting attributes, sending and receiving interactions
Bu alan ile ilgili metodlar şöyle
1. changeAttributeTransportationType()
2. changeInteractionTransportationType ()
3. deleteObjectInstance()
4. localDeleteObjectInstance()
5. registerObjectInstance()
6. requestAttributeValueUpdate()
7. sendInteraction()
8. updateAttributeValues()

changeAttributeTransportationType metodu
Örnek ver

changeInteractionTransportationType metodu
Örnek ver

deleteObjectInstance - ObjectInstanceHandle 
Belirtilen nesneyi siler. Eğer nesne HLA tarafından bilinmiyorsa
RTIException("Unknown object id ...")
şeklinde bir exception fırlatılır. Sanırım sadece kendi yarattığımız nesneleri silebiliyoruz.

localDeleteObjectInstance - ObjectInstanceHandle 
deleteObjectInstance() ile farkını bilmiyorum

registerObjectInstance metodu - ObjectClassHandle
Eğer yanlış bir ObjectClassHandle verilirse hla.rti1516e.exceptions.ObjectClassNotPublished exception fırlatılır.

Object instance silmek için deleteObjectInstance() çağrısı yapılır. Nesneye abone olan karşı federedeki FederateAmbassador sınıfının discoverObjectInstance() metodu tetiklenir.

requestAttributeValueUpdate metodu - ObjectInstanceHandle + AttributeHandleSet
AttributeHandleValueMap yerine AttributeHandleSet kullanılıyor.

sendInteraction metodu - InteractionClassHandle
Interaction gönderir
Örnek
Hiç parametresi olmayan interaction göndermek için şöyle yaparız.
Önce bir InteractionClassHandle yaratırız.
InteractionClassHandle icHandle = rti.getInteractionClassHandle ("HLAinteractionRoot.HLAmanager.SimulationStarts");
Daha sonra parametreler için bir ParameterHandleValueMapFactory yaratırız.
ParameterHandleValueMapFactory pf = rti.getParameterHandleValueMapFactory();
Daha sonra şöyle yaparız.
ParameterHandleValuemap map = pf.create (0);
rti.sendInteraction(icHandle,map,null);

updateAttributeValues metodu - ObjectInstanceHandle + AttributeHandleValueMap + byte [] + LogicalTime
Belirtilen nesenin alanlarını günceller. Nesneye abone olan karşı federedeki FederateAmbassador sınıfının reflectAttributeValues() metodu tetiklenir.

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.

Bazı projelerde güncellenen alan hemen işleme koyuluyor. Bazı projelerde ise güncelleme işlemi bir  sonraki frame'de uygulanmak üzere saklanıyor. Bu önemli bir karar.

1.  Hemen İşleme Yöntemi
- Elimizde hareket eden bir araba olsun. Hesaplama yapan katılımcı arabayı hareket ettirir.
- Haritayı gösteren katılımcı hemen bu değişikliği gösterir.

2.  Bir Sonraki Frame Yöntemi
- Elimizde hareket eden bir araba olsun. Hesaplama yapan katılımcı arabayı hareket ettirir.
x - x + 10
- Haritayı gösteren katılımcı bir sonraki frame'de bu değişikliği gösterir.



Hiç yorum yok:

Yorum Gönder