9 Eylül 2019 Pazartesi

HLA FederateAmbassador Arayüzü - Object Management

Giriş
Bu arayüzü gerçekleştiren sınıf NullFederateAmbassador. Kendi sınıfımızı bundan kalıtabiliriz.


discoverObjectInstance metodu - ObjectInstanceHandle + ObjectClassHandle + String

1. Birinci parametre instance için kullanılan handle nesnesidir.

2. İkinci parametre instance'ın ait olduğu class için kullanılan handle nesnesidir. Elimizde şöyle bir hiyerarşi olsun
Foo <- Bar
Karşı taraf Bar nesnesi yarattı ancak benim federem Bar (handle 20 olsun) sınıfı yerine Foo (handle 19 olsun) sınıfının dinliyor olsun. Bu durumda ObjectClass olarak Bar yani 19 alırız.

3. Üçüncü parametre objectName yani Foo'nun tam yolu ile belirtilen ismidir.

reflectAttributedValues metodu - ObjectInstanceHandle + AttributeHandleValueMap + byte [] userSuppliedFlag + OrderType sentOrdering + TransportationTypeHandle theTransport+ SupplemantaReflectInfo 

Aslında bu metodun 3 tane daha overload edilmiş hali var. En basit olanı bu.

Bu metodda bize bir nesne gelmiştir. Sadece ObjectInstanceHandle ve AttributeHandleMap önemli.
AttributeHandleValueMap aslında  şöyle tanımlı
public interface AttributeHandleValueMap extends Map<AttributeHandle,byte[]> {...}
Kod kabaca şöyle
Map<ObjectInstanceHandle,Object> objectMap = ...;
Map<AttributeHandle,Field> fieldMap = ...;
Object obj = objectMap.get(objectInstanceHandle);
for (Entry<AttributeHandle,byte[]> entry : attributeHandleValueMap){
  Field field = fieldMap .get(entry.key());
    //burada decode işlemi yapılır ve field'a atanır
}
removeObjectInstance metodu - ObjectInstanceHandle + byte [] userSuppliedFlag + OrderType sentOrdering + SupplementalRemoveInfo

Aslında bu metodun 3 tane daha overload edilmiş hali var. En basit olanı bu.

receiveInteraction metodu - InteractionClassHandle + ParameterHandleValueMap +  byte [] userSuppliedFlag + OrderType sentOrdering + TransportationTypeHandle theTransport+ SupplementalReceiveInfo

Aslında bu metodun 3 tane daha overload edilmiş hali var. En basit olanı bu. 
Bu metodda bize bir Interaction gelmiştir. Sadece InteractionClassHandle ve ParameterHandleValueMap önemli. ParameterHandleValueMap aslında  şöyle tanımlı
public interface ParameterHandleValueMap extends Map<ParameterHandle,byte[]> {...}
Kod kabaca şöyle
Map<InteractionClassHandle,Object> interactionMap = ...;
Map<ParameterHandle,Field> parameterMap = ...;
Object obj = interactionMap .get(interactionClassHandle);
for (Entry<ParameterHandle,byte[]> entry : parameterHandleValueMap){
  Field field = parameterMap.get(entry.key());
    //burada decode işlemi yapılır ve field'a atanır
}

Hiç yorum yok:

Yorum Gönder