- 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
Ö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:
Source kod:
"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.