@@ -1232,9 +1232,19 @@ void t_go_generator::generate_go_struct_definition(ofstream& out,
1232
1232
out << indent () << " }" << endl << endl;
1233
1233
// Default values for optional fields
1234
1234
out << indent () << " func (p *" << tstruct_name << " ) StructDefinition() thrift.StructDefinition {" << endl;
1235
- out << indent () << " return thrift.StructDefinition{Namespace: \" " << tstruct->get_program ()->get_namespace (" * " ) << " \" , Name: \" " << tstruct->get_name () << " \" }" << endl;
1235
+ out << indent () << " return thrift.StructDefinition{Namespace: \" " << tstruct->get_current_name ()->get_namespace () << " \" , Name: \" " << tstruct-> get_current_name () ->get_name () << " \" }" << endl;
1236
1236
out << indent () << " }" << endl << endl;
1237
1237
1238
+ out << indent () << " func (p *" << tstruct_name << " ) LegacyStructDefinitions() []thrift.StructDefinition {" << endl;
1239
+ out << indent () << " return []thrift.StructDefinition{" << endl;
1240
+ std::vector<t_name*> legacy_names = tstruct->get_legacy_names ();
1241
+ for (std::vector<t_name*>::iterator it = legacy_names.begin (); it != legacy_names.end (); ++it) {
1242
+ out << indent () << " {Namespace: \" " << (*it)->get_namespace () << " \" , Name:\" " << (*it)->get_name () << " \" }," << endl;
1243
+ }
1244
+ out << indent () << " }" << endl;
1245
+ out << indent () << " }" << endl << endl;
1246
+
1247
+
1238
1248
for (m_iter = members.begin (); m_iter != members.end (); ++m_iter) {
1239
1249
string publicized_name;
1240
1250
t_const_value* def_value;
@@ -1802,6 +1812,22 @@ void t_go_generator::generate_service_interface(t_service* tservice) {
1802
1812
}
1803
1813
}
1804
1814
1815
+ string singletonServiceName (privatize (tservice->get_name ()).append (" Singleton" ));
1816
+ f_service_ << indent () << " type " << singletonServiceName << " struct {} " << endl << endl;
1817
+
1818
+ f_service_ << indent () << " func (" << singletonServiceName << " ) StructDefinition() thrift.StructDefinition {" << endl;
1819
+ f_service_ << indent () << " return thrift.StructDefinition{Namespace: \" " << tservice->get_current_name ()->get_namespace () << " \" , Name: \" " << tservice->get_current_name ()->get_name () << " \" }" << endl;
1820
+ f_service_ << indent () << " }" << endl << endl;
1821
+
1822
+ f_service_ << indent () << " func (" << singletonServiceName << " ) LegacyStructDefinitions() []thrift.StructDefinition {" << endl;
1823
+ f_service_ << indent () << " return []thrift.StructDefinition{" << endl;
1824
+ std::vector<t_name*> legacy_names = tservice->get_legacy_names ();
1825
+ for (std::vector<t_name*>::iterator it = legacy_names.begin (); it != legacy_names.end (); ++it) {
1826
+ f_service_ << indent () << " {Namespace: \" " << (*it)->get_namespace () << " \" , Name:\" " << (*it)->get_name () << " \" }," << endl;
1827
+ }
1828
+ f_service_ << indent () << " }" << endl;
1829
+ f_service_ << indent () << " }" << endl << endl;
1830
+
1805
1831
f_service_ << indent () << " type " << interfaceName << " interface {" << extends_if;
1806
1832
indent_up ();
1807
1833
generate_go_docstring (f_service_, tservice);
@@ -1832,6 +1858,7 @@ void t_go_generator::generate_service_client(t_service* tservice) {
1832
1858
string extends_client = " " ;
1833
1859
string extends_client_new = " " ;
1834
1860
string serviceName (publicize (tservice->get_name ()));
1861
+ string singletonServiceName (privatize (tservice->get_name ()).append (" Singleton" ));
1835
1862
1836
1863
if (tservice->get_extends () != NULL ) {
1837
1864
extends = type_name (tservice->get_extends ());
@@ -1869,9 +1896,9 @@ void t_go_generator::generate_service_client(t_service* tservice) {
1869
1896
<< " Client, error) {" << endl;
1870
1897
1871
1898
indent_up ();
1872
- f_service_ << indent () << " cl, err := p.Build( \" "
1873
- << tservice-> get_program ()-> get_namespace ( " * " ) << " \" , \" "
1874
- << tservice-> get_name () << " \" ) " << endl << endl;
1899
+ f_service_ << indent () << " cl, err := thrift.BuildClient(p, "
1900
+ << singletonServiceName << " {}) " << endl << endl;
1901
+
1875
1902
f_service_ << indent () << " if err != nil {" << endl;
1876
1903
indent_up ();
1877
1904
f_service_ << indent () << " return nil, err" << endl;
@@ -2008,10 +2035,12 @@ void t_go_generator::generate_service_server(t_service* tservice) {
2008
2035
}
2009
2036
2010
2037
string pServiceName (privatize (serviceName));
2038
+ string singletonServiceName (privatize (tservice->get_name ()).append (" Singleton" ));
2011
2039
2012
2040
f_service_ << indent () << " func New" << serviceName << " ProcessorProvider(handler " << serviceName
2013
2041
<< " , provider thrift.TProcessorProvider) (thrift.TProcessor, error) {" << endl;
2014
- f_service_ << indent () << " p, err := provider.Build(\" " << tservice->get_program ()->get_namespace (" *" ) << " \" , \" " << tservice->get_name () << " \" )" << endl;
2042
+ f_service_ << indent () << " p, err := thrift.BuildProcessor(provider, "
2043
+ << singletonServiceName << " {})" << endl << endl;
2015
2044
f_service_ << indent () << " if err != nil {" << endl;
2016
2045
indent_up ();
2017
2046
f_service_ << indent () << " return nil, err" << endl;
0 commit comments