Compile-time safe packet builder

  • Konuyu açan Konuyu açan Larry Watterson
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 0
  • Gösterim Gösterim 149

Larry Watterson

Üye
Üye
Mesaj
42
Çözümler
1
Beğeni
124
Puan
699
Ticaret Puanı
0
Trivially-copyable paket struct'larını ve değişken payload'ları bir buffer'a serialize eidp, istediğiniz bir send stratejisiyle gönderen(tabii default-initializable functor/stateless lambda olmak koşuluyla) fluent, move-only bir builder.

"Neden böyle bir şeye ihtiyacımız olsun?" derseniz, paket gönderirken şu hataları compile-time'da yakalarsınız:

-> padding'li bir struct'ı raw byte olarak alakalı buffer'a yazmak
-> pointer serialize etmeye çalışmak

Contiguous, forward range veya bir POD'u argüman olarak geçebilirsiniz.

Fayda olarak da compile-time validation, type safety sayılabilir. Tabii code-base'in %99u buna uymuyor ki biz niye uyalım gibi bir yaklaşımınız da olabilir, o da sizin bileceğiniz iş. Benim işime yarıyor, zaten basit bir şey paylaşmak istedim.

C++23, GCC14 işinizi görür daha alt sürümler için uyarlamak size kalmış.

Buffer türü değişebilir, constrainti sağlamanız yeterli ben default TEMP_BUFFER için concept oluşturdum, ihtiyacınıza/kendi API'nize göre düzenlersiniz.

Örnek kullanım

Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.



Önemli Not: PacketBuilder buffer'ı chainde `std::forward_like` ile move ediyor. Yani TEMP_BUFFER'ı bu builder ile kullanacaksanız şu konuda bahsettiğim sorunu çözmeniz gerekir: TEMP_BUFFER Copy/Move Problem

Gözden kaçan bir şey varsa bildirebilirsiniz, düzeltirim.
İyi forumlar.

örnek:
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.


Source kod:
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.
 
Geri
Üst