साथ serializing जबकि पर विचार इस तरह एक Cap'n'Proto स्कीमा:स्ट्रीम Cap'n'Proto
struct Document {
header @0 : Header;
records @1 :List(Record); // usually large number of records.
footer @2 :Footer;
}
struct Header { numberOfRecords : UInt32; /* some fields */ };
struct Footer { /* some fields */ };
struct Record {
type : UInt32;
desc : Text;
/* some more fields, relatively large in total */
}
अब मैं क्रमानुसार करने (अर्थात निर्माण) एक दस्तावेज उदाहरण और एक रिमोट गंतव्य के लिए यह धारा चाहते हैं।
चूंकि दस्तावेज़ आमतौर पर बहुत बड़ा होता है, इसलिए मैं इसे भेजने से पहले इसे स्मृति में पूरी तरह से बनाना नहीं चाहता हूं। इसके बजाय मैं एक ऐसे निर्माता की तलाश में हूं जो सीधे तार पर संरचना द्वारा संरचना भेजता है। ऐसा कि अतिरिक्त आवश्यक मेमोरी बफर स्थिर है (यानी ओ (अधिकतम (आकार (हेडर), आकार (रिकॉर्ड), आकार (फुटर)))
ट्यूटोरियल सामग्री को देखते हुए मुझे ऐसा निर्माता नहीं मिला है। MallocMessageBuilder
(तब आप उस पर writeMessageToFd
कहते हैं) पहले स्मृति में सब कुछ बनाने के लिए लगता है।
करता Cap'n'Proto API समर्थन इस तरह के एक यूज-केस?
या Cap'n'Proto अधिक होती है संदेश भेजने के लिए स्मृति में फिट होने वाले संदेशों के लिए उपयोग किया जा सकता है?
इस उदाहरण में, दस्तावेज़ संरचना को छोड़ा जा सकता है और फिर ई सिर्फ एक शीर्षलेख संदेश, एन रिकॉर्ड संदेश और एक पाद लेख का अनुक्रम भेज सकता है। चूंकि कैप 'प्रोटो संदेश स्वयं-सीमित है, यह काम करना चाहिए। लेकिन आप अपना दस्तावेज़ रूट खो देते हैं - शायद कभी-कभी यह वास्तव में एक विकल्प नहीं है।