Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-6328

[C++ Messaging] What to do with unsupported data types?

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 0.30
    • None
    • C++ Broker, C++ Client
    • None

    Description

      Interoperating with a non-qpid client reveals difficulties handling non-native data type, such as Amqp 1.0 char (utf32). The following issues are related:

      Issue Description
      QPID-6314 Message containing utf32 value is rejected at broker ingress.
      QPID-6315 Message containing timestamp passes broker ingress but Messaging client converts timestamp to INT64. Messaging client cannot interoperate using timestamp data type.
      QPID-6327 Message containing a map with a utf32 value passes broker ingress but Messaging client throws decoding the message. Client must use try-catch to recover from failed message decode. Client cannot access any of the rest of the map message.

      The difficult data types are

      • decimal32
      • decimal64
      • decimal128
      • char
      • timestamp

      As they have no natural representation in C code.

      One possible resolution is to have an external encoding in Messaging that describes the data. This is identical to the way Messaging handles strings. A vbin8 string and a utf8 string are both 'string' data type in the customer code and he needs to use the getEncoding and setEncoding methods to differentiate them. A possible scheme:

      Native type Encodings
      uint32 uint32, utf32, decimal32
      uint64 uint64, decimal64, timestamp

      This still leaves the decimal128 data type without a representation.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            gsim Gordon Sim
            chug Charles E. Rolke

            Dates

              Created:
              Updated:

              Slack

                Issue deployment