यहाँ, उनके डॉक्स, यह अच्छी तरह से पर्याप्त नहीं बताते कि क्या मैं यह पता लगाने की कोशिश कर रहा हूँ कम से कम मेरे लिए है ..डायनामिक मैसेज क्लास में एक संदेश को कैसे पार्स करें और फिर फ़ील्ड के माध्यम से पुनरावृत्ति करें?
Senario:
मैं 5 आद्य फ़ाइलों है कि मैं के लिए protoc साथ उत्पन्न है सी ++। मेरे आवेदन को एक संदेश प्राप्त करने की आवश्यकता है और उसके बाद अपने मूल्यों और नामों तक पहुंचने के दौरान सभी क्षेत्रों के माध्यम से पुन: प्रयास करने में सक्षम होना चाहिए।
मैं क्या करना चाहता हूं वह डायनेमिक मैसेज क्लास में एक संदेश पार्स करें और फिर फ़ील्ड के माध्यम से पुनरावृत्ति करें। इस तरह मुझे यह नहीं पता कि यह वास्तव में कौन सा संदेश है और मैं उन्हें एक सामान्य तरीके से संभाल सकता हूं।
मुझे पता है कि संदेशों को उनके विशिष्ट प्रकार पर पार्स करके उन्हें संभालना संभव है, फिर उन्हें उनके संदेश बेस क्लास के रूप में व्यवहार करना, लेकिन मेरे आवेदन के लिए जो वांछनीय नहीं है।
ऐसा लगता है कि मैं क्या करना चाहता हूं "--descriptor_set_out" और गतिशील संदेश वर्ग के माध्यम से संभव होना चाहिए।
मैं क्या कोशिश की है (और के साथ विफल):
मैं अपने protos के साथ फ़ोल्डर में descriptor.proto चले गए और संकलन चरण में ओर के साथ इसे शामिल मेरी अन्य शामिल हैं। मैंने "my_descriptors.pb.ds" फ़ाइल को प्रिंट करने के लिए - descriptor_set_out ध्वज भी सेट किया है
मुझे नहीं पता कि वहां से आगे बढ़ना है।
Here's what i've referenced, although there isn't much... लंबी पोस्ट के लिए खेद है, और कुछ हद तक अस्पष्ट विषय नामकरण स्कीमा है।
इसके अलावा, यह स्पष्ट नहीं था, मुझे लगता है कि संदेश "अज्ञात" नहीं हैं। मुझे लगता है कि अभी भी प्रत्येक प्रोटो के लिए संबंधित शीर्षलेखों को शामिल करने की आवश्यकता होगी, इसलिए मेरा कोड 'अज्ञात' संदेश के बारे में जानता है।
एक प्रश्न - आप ऐसा क्यों करना चाहते हैं? यदि आप संदेश विवरण के साथ संदेश विवरण (नाम और प्रकार - जो फ़ील्ड के नामों के माध्यम से पुन: सक्रिय करने में सक्षम होना आवश्यक है) को स्थानांतरित कर रहे हैं, तो आप मूल रूप से गैर-स्वयं-वर्णन के प्रदर्शन और आकार बोनस को रद्द कर रहे हैं संदेश (जो प्रोटोबफ है)। आप इसके लिए JSON का उपयोग कर सकते हैं। – DarkWanderer
@ डार्कवांडर, मेरा उपयोग यह था कि मेरे पास दक्षता उद्देश्यों के लिए एक बाइनरी संदेश है जो कुछ पब उप प्रक्रियाओं के माध्यम से बहती है। मेरे पास एक और प्रक्रिया है जिसे मैं बैठना चाहता था और पब उप प्रक्रिया के माध्यम से बहने वाले सभी संदेशों में सुनना चाहता था। इसमें संदेशों को डीकोड करने के लिए सभी आवश्यक शीर्षलेख शामिल हो सकते हैं और फिर मैं उन्हें एक पठनीय KeyValue स्ट्रिंग में ऑडिट/डिबगिंग उद्देश्यों के लिए लॉग फ़ाइल में आउटपुट करना चाहता हूं। मैं जो भी नया संदेश प्रकार जोड़ता हूं, उसके लिए मैं एक डिकोडर/अनुवादक नहीं लिखना चाहता हूं। बाइट्स को सामान्य प्रकार और पुनरावृत्त क्षेत्रों को सामान्य रूप से डंप करना चाहते हैं। – bgura