static void generateMethodDispatcher(CodeFile& f, Service* s, Method& m) { f.output("public static bool %s(bintalk.IReader __r__, %sProxy __p__)", m.getNameC(), s->getNameC()); f.indent("{"); for(size_t i = 0; i < m.fields_.size(); i++) { Field& field = m.fields_[i]; std::string tn; getFieldTypeName(field, tn); std::string dft; getFieldDefault(field, dft); f.output("%s %s= %s;", tn.c_str(), field.getNameC(), dft.c_str()); } generateFieldContainerDSCode(f, &m); f.listBegin(",", false, "return __p__.%s(", m.getNameC()); for(size_t i = 0; i < m.fields_.size(); i++) { Field& field = m.fields_[i]; f.listItem("%s", field.getNameC()); } f.listEnd(");"); f.recover("}"); }
static void generateProxyAbstractMethod(CodeFile& f, Method& m) { f.listBegin(",", false, "bool %s(", m.getNameC()); for(size_t i = 0; i < m.fields_.size(); i++) { Field& field = m.fields_[i]; std::string tn; getFieldTypeName(field, tn); f.listItem("%s %s",tn.c_str(), field.getNameC()); } f.listEnd(");"); }
static void generateServiceDispatcherMethod(CodeFile& f, Service* s, Method& m) { f.output("def %s_%s(__b__, __p__, __proxy__):", s->getNameC(), m.getNameC()); f.indent(); generateFieldContainerDSCode(f, &m, false); f.listBegin(",", false, "__proxy__.%s(", m.getNameC()); for(size_t i = 0; i < m.fields_.size(); i++) f.listItem("%s", m.fields_[i].getNameC()); f.listEnd(")"); f.output("return __p__"); f.recover(); f.output("%sDispatcher.append(%s_%s)", s->getNameC(), s->getNameC(), m.getNameC()); }
static void generateServiceStubMethod(CodeFile& f, Method& m) { f.listBegin(",", false, "def %s(", m.getNameC()); f.listItem("self"); for(size_t i = 0; i < m.fields_.size(); i++) { Field& field = m.fields_[i]; f.listItem("%s", field.getNameC()); } f.listEnd("):"); f.indent(); f.output("__b__ = []"); f.output("protocol_writer.write_mid(%d, __b__)", m.mid_); generateFieldContainerSCode(f, &m, false); f.output("self.call(__b__)"); f.recover(); }
static void generateStubMethod(CodeFile& f, Service* s, Method& m) { f.listBegin(",", false, "public void %s(", m.getNameC()); for(size_t i = 0; i < m.fields_.size(); i++) { Field& field = m.fields_[i]; std::string tn; getFieldTypeName(field, tn); f.listItem("%s %s", tn.c_str(), field.getNameC()); } f.listEnd(")"); f.indent("{"); f.output("bintalk.IWriter __w__ = methodBegin();"); f.output("bintalk.ProtocolWriter.writeMid(__w__, %d);", m.mid_); generateFieldContainerSCode(f, &m); f.output("methodEnd();"); f.recover("}"); }