Что чаще всего используется? RSS или Атом? и какой из них лучше построить?

Я подумываю использовать в своем проекте RSS или Atom, но также "улучшить" фид с помощью моих собственных специальных атрибутов, специально используемых моим проектом.

Итак, у меня есть два вопроса:

1) Какой наиболее часто используется RSS и Atom в Интернете и на крупных сайтах?

2) Из чего лучше всего строить, добавляя собственные теги?

Обновление:

Итак, RSS чаще всего используется, но я должен выбрать Atom, так как мне нужно сделать свои собственные настройки в ленте? Если RSS более популярен, почему бы не выбрать это? Почему не {message_base base; параметры message_with_parameters; reply_message ответ; buffer_t * buffer; // не могу ...

У меня есть это объединение:

typedef union Message
{
    message_base            base;
    message_with_parameters  parameters;
    reply_message          reply;
    buffer_t                *buffer; // can't figure out what to put here
} message;

message_with_parameters имеет message_base в качестве первого поля, а reply_message имеет message_with_parameters как первое поле, которое в свою очередь имеет message_base как первое поле.
Таким образом, в основном я могу получить доступ к любому из них, и я все равно получу все необходимые данные, однако я получаю буфер из своего драйвера, и теперь я хочу сериализовать его в сообщение.
Я уже знаю, что указатель на буфер неправильный, так как он не будет соответствовать моим структурам, но у меня не может быть буфера фиксированного размера.
Где-то по пути я хочу сделать это:

m->buffer = buff->payload;

И независимо от того, какой у меня тип данных, он все равно будет сериализован.
Как это можно сделать?

РЕДАКТИРОВАТЬ:
Вот мои структуры:

typedef struct MessageBase
{
    uint32_t    u32DeviceID;
    uint32_t    u32CoreID;
    uint16_t    u16Class;
    uint16_t    u16CRC;
    uint8_t     u8OpCode;

    void (*states [MAX_OPCODES]) (void *);
} message_base;

typedef struct MessageWithParameters
{
    message_base    base_class;
    uint8_t         u8Param1;
    uint8_t         u8Param2;
} message_with_parameters;

typedef message_with_parameters reply_message;

typedef union Message
{
    message_base            base;
    message_with_parameters parameters;
    reply_message           reply;
} message;
1
задан timrau 15 August 2012 в 17:07
поделиться

1 ответ

потому что данные в буфере не являются частью объединения.

buffer_t * buffer является указателем, поэтому указатель является частью объединения, а не данными, на которые он указывает

, вы, вероятно, захотите сделать что-то вроде

 m =  (message*) buff->payload;
2
ответ дан 2 September 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: