Project

General

Profile

Actions

Support Request #9832

closed

adtf/anonymous would not be deserialized

Added by hidden over 4 years ago. Updated almost 4 years ago.

Status:
Closed
Priority:
Normal
Customer:
AUDI
Department:
EF
Requester's Priority:
Normal
Support Level:
3rd Level
Resolution:
Product Issue Opened
Platform:
Windows 10 64bit
Topic:
ADTF::Common
FAQ Links:

Description

Supportanfrage

Beim Versuch, Daten zwischen ADTF2 und ADTF3 auszutauschen, bekomme ich das mit der Rückrichtung noch nicht hin (3 -> 2). Inhalt soll einfach ein beliebig großer Byte-Blob sein.


 
Bekomme in ADTF2 die Fehlermeldung:

error | 00:05:39:390 | Unable to read from input stream: Class not found: Class not found: "oid.adtf.adtf3.type_deserialization.adtf/anonymous" | ipc_sample_source.cpp(157) | 16692/23548 | E:\CONAN\.conan\data\ADTF\2.14.0\ex24\testing\package\85f780d0530411a64b0be4407b381706014b445d\bin\adtf_launcher.exe | OK | No error | cIPCPlugin

Hier der Code-Snippet aus dem ADTF3-Sender (ich habe leider kein Beispiel gefunden, wo ein Blob geschickt wird)

writerLinkLayer_ = CreateOutputPin("link_layer", adtf::streaming::stream_meta_type_anonymous());

// ...

std::string serializedData;
serialize_to_string(*link_layer_short_range, serializedData);
adtf::ucom::object_ptr_locked<adtf::streaming::ISampleBuffer> pBuffer;
adtf::ucom::object_ptr<adtf::streaming::ISample> pSample;
adtf::streaming::alloc_sample(pSample,tTimeStamp(0));
adtf::streaming::write_to_sample(*pSample, serializedData);
writerLinkLayer_->Write(pSample);

Lösung

Dafür gibt's in der Toolbox tatsächlich keinen Deserialisierer. Im Moment fällt mir für Dich als Workaround nur ein einen adtf/default Type zu verwenden, der einfach eine leere Struktur beschreibt. Dann sollte es klappen.

Ticket ASUPTB-63 in der Support Toolbox erstellt, damit es da in Zukunft einen Deserialisierer gibt.

Was mir in deinem Code noch aufgefallen ist:

std::string serializedData;
serialize_to_string(*link_layer_short_range, serializedData);
adtf::streaming::alloc_sample(pSample,tTimeStamp(0));
adtf::streaming::write_to_sample(*pSample, serializedData);

write_to_sample funktioniert nicht mit std::string, sondern nur mit std::is_trivially_copyable Daten Typen (das fehlt leider im template als static_assert).

mach am besten folgendes:

std::string serializedData;
serialize_to_string(*link_layer_short_range, serializedData);
adtf::ucom::object_ptr<adtf::streaming::ISample> pSample;
adtf::streaming::alloc_sample(pSample,tTimeStamp(0));

{
    adtf::ucom::object_ptr_locked<adtf::streaming::ISampleBuffer> pBuffer;
    RETURN_IF_FAILED(pSample->WriteLock(pBuffer));
    RETURN_IF_FAILED(pBuffer->Write(adtf::base::adtf_memory_buffer<const char>(serializedData.data(), serializedData.length()));
}

Files

image001.png (11.4 KB) image001.png hidden, 2020-01-15 09:00
image002.png (9.36 KB) image002.png hidden, 2020-01-15 09:00
Actions #1

Updated by hidden over 4 years ago

  • Subject changed from Re: AW: AW: ADTF3 Hack&Ack Offene Fragen to ADTF3 Hack&Ack Offene Fragen
  • Status changed from New to In Progress
  • Author changed from hidden to hidden
  • Topic set to ADTF::Common
  • Customer set to AUDI
  • Department set to EF
Actions #2

Updated by hidden over 4 years ago

  • Description updated (diff)
Actions #3

Updated by hidden over 4 years ago

  • Description updated (diff)
Actions #4

Updated by hidden over 4 years ago

Hi Falk,

uiuiui, dafür gibt's in der Toolbox tatsächlich keinen Deserialisierer. Im Moment fällt mir für Dich als Workaround nur ein einen adtf/default Type zu verwenden, der einfach eine leere Struktur beschreibt. Dann sollte es klappen.

Ich erstell ein Ticket in der Support Toolbox, damit es da in Zukunft einen Deseiralisierer gibt.

Was mir in deinem Code noch Aufgefallen ist:

std::string serializedData;
serialize_to_string(*link_layer_short_range, serializedData);
adtf::streaming::alloc_sample(pSample,tTimeStamp(0));
adtf::streaming::write_to_sample(*pSample, serializedData);

write_to_sample funktioniert nicht mit std::string, sondern nur mit std::is_trivially_copyable Daten Typen (das fehlt leider im template als static_assert).

mach am besten folgendes:

std::string serializedData;
serialize_to_string(*link_layer_short_range, serializedData);
adtf::ucom::object_ptr<adtf::streaming::ISample> pSample;
adtf::streaming::alloc_sample(pSample,tTimeStamp(0));

{
    adtf::ucom::object_ptr_locked<adtf::streaming::ISampleBuffer> pBuffer;
    RETURN_IF_FAILED(pSample->WriteLock(pBuffer));
    RETURN_IF_FAILED(pBuffer->Write(adtf::base::adtf_memory_buffer<const char>(serializedData.data(), serializedData.length()));
}

Grüße,

Martin

Actions #5

Updated by hidden over 4 years ago

  • Resolution set to Product Issue Opened
  • Product Issue Numbers set to https://www.cip.audi.de/jira/browse/ASUPTB-63
Actions #6

Updated by hidden over 4 years ago

  • Status changed from In Progress to Customer Feedback Required
  • Support Level changed from 2nd Level to 3rd Level
Actions #7

Updated by hidden over 4 years ago

  • Project changed from Public Support to 11
  • Affected Products ADTF 3.6.2 added
  • Platform Windows 10 64bit added
Actions #8

Updated by hidden over 4 years ago

  • Subject changed from ADTF3 Hack&Ack Offene Fragen to adtf/anonymous would not be deserialized
  • Affected Products ADTF 3 Support Toolbox 3.1.0 added
Actions #9

Updated by hidden over 4 years ago

Hallo Martin,

ich habe den stream_meta_type_anonymous() zu stream_meta_type_plain() geändert und deine write-methode übernommen. Damit kommen nun Daten im ADTF2 an.

Vielen Dank, kann geschlossen werden.

Actions #10

Updated by hidden over 4 years ago

  • Status changed from Customer Feedback Required to To Be Closed
Actions #11

Updated by hidden over 4 years ago

  • Description updated (diff)
Actions #14

Updated by hidden almost 4 years ago

  • Project changed from 11 to Public Support
  • Private changed from Yes to No
Actions #15

Updated by hidden almost 4 years ago

  • Status changed from To Be Closed to Closed
Actions

Also available in: Atom PDF