Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

such as your demo, how can i generate my gen-c_nano files from demo.thrift #13

Open
dplord opened this issue Dec 14, 2016 · 5 comments
Open

Comments

@dplord
Copy link

dplord commented Dec 14, 2016

such as your demo, how can i generate my gen-c_nano files from demo.thrift

@markrileybot
Copy link
Owner

Should be as easy as building the compiler and generating code using the the c_nano language. Have you tried this? Is it not working?

@dplord
Copy link
Author

dplord commented Dec 15, 2016

@markrileybot
I build thrift-nano success,
Here is all my file

./build/cmake_install.cmake
./build/CMakeCache.txt
./build/CMakeFiles/3.3.2/CMakeCCompiler.cmake
./build/CMakeFiles/3.3.2/CMakeCXXCompiler.cmake
./build/CMakeFiles/3.3.2/CMakeDetermineCompilerABI_C.bin
./build/CMakeFiles/3.3.2/CMakeDetermineCompilerABI_CXX.bin
./build/CMakeFiles/3.3.2/CMakeSystem.cmake
./build/CMakeFiles/3.3.2/CompilerIdC/a.out
./build/CMakeFiles/3.3.2/CompilerIdC/CMakeCCompilerId.c
./build/CMakeFiles/3.3.2/CompilerIdCXX/a.out
./build/CMakeFiles/3.3.2/CompilerIdCXX/CMakeCXXCompilerId.cpp
./build/CMakeFiles/cmake.check_cache
./build/CMakeFiles/CMakeDirectoryInformation.cmake
./build/CMakeFiles/CMakeError.log
./build/CMakeFiles/CMakeOutput.log
./build/CMakeFiles/feature_tests.bin
./build/CMakeFiles/feature_tests.c
./build/CMakeFiles/feature_tests.cxx
./build/CMakeFiles/Makefile.cmake
./build/CMakeFiles/Makefile2
./build/CMakeFiles/progress.marks
./build/CMakeFiles/TargetDirectories.txt
./build/lib/c_nano/src/cmake_install.cmake
./build/lib/c_nano/src/CMakeFiles/CMakeDirectoryInformation.cmake
./build/lib/c_nano/src/CMakeFiles/progress.marks
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/build.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/C.includecache
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/cmake_clean.cmake
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/depend.internal
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/depend.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/DependInfo.cmake
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/flags.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/link.txt
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/progress.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/test/gen-c_nano/tn_package_name_test_types.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/test/test_serial.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/thrift-nano/init.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/thrift-nano/mem.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/thrift-nano/protocol.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/thrift-nano/struct.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/thrift-nano/transport.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-serial.dir/thrift-nano/types.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/build.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/C.includecache
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/cmake_clean.cmake
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/cmake_clean_target.cmake
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/depend.internal
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/depend.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/DependInfo.cmake
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/flags.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/link.txt
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/progress.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/thrift-nano/init.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/thrift-nano/mem.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/thrift-nano/protocol.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/thrift-nano/struct.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/thrift-nano/transport.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-static.dir/thrift-nano/types.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/build.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/C.includecache
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/cmake_clean.cmake
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/depend.internal
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/depend.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/DependInfo.cmake
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/flags.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/link.txt
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/progress.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/test/gen-c_nano/tn_package_name_test_types.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/test/test.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/thrift-nano/init.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/thrift-nano/mem.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/thrift-nano/protocol.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/thrift-nano/struct.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/thrift-nano/transport.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano-test.dir/thrift-nano/types.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/build.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/C.includecache
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/cmake_clean.cmake
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/depend.internal
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/depend.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/DependInfo.cmake
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/flags.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/link.txt
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/progress.make
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/thrift-nano/init.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/thrift-nano/mem.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/thrift-nano/protocol.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/thrift-nano/struct.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/thrift-nano/transport.c.o
./build/lib/c_nano/src/CMakeFiles/thrift-nano.dir/thrift-nano/types.c.o
./build/lib/c_nano/src/libthrift-nano-static.a
./build/lib/c_nano/src/libthrift-nano.so
./build/lib/c_nano/src/Makefile
./build/lib/c_nano/src/thrift-nano-serial
./build/lib/c_nano/src/thrift-nano-test
./build/Makefile
./build/thrift-nano/config.h
./build.sh

which is the generator execute file?

@markrileybot
Copy link
Owner

markrileybot commented Dec 15, 2016

Ooops!

Seems I forgot to push most of the compiler stuff. I've pushed it so pull and run the build script again.

Once you've built you should see a

./build/compiler/cpp/thrift

executable that you can use to compile your thrift schema.

@dplord
Copy link
Author

dplord commented Dec 16, 2016

@markrileybot
i have find my thrift executor file, and I generate my thrift schema with the command
build/compiler/cpp/thrift --gen c_nano 1.thrift

but if your IDL contain service
the service still use glib
such as

boolean bbb_client_recv_get_str (bbbIf * iface, tn_buffer_t ** _return, GError ** error)
{

  gint32 rseqid;
  gchar * fname = NULL;
  ThriftMessageType mtype;
  ThriftProtocol * protocol = BBB_CLIENT (iface)->input_protocol;

  if (thrift_protocol_read_message_begin (protocol, &fname, &mtype, &rseqid, error) < 0)
  {
    if (fname) g_free (fname);
    return FALSE;
  }

  if (mtype == T_EXCEPTION) {
    if (fname) g_free (fname);
    ThriftApplicationException *xception = g_object_new (THRIFT_TYPE_APPLICATION_EXCEPTION, NULL);
    thrift_struct_read (THRIFT_STRUCT (xception), protocol, NULL);
    thrift_protocol_read_message_end (protocol, NULL);
    thrift_transport_read_end (protocol->transport, NULL);
    g_set_error (error, THRIFT_APPLICATION_EXCEPTION_ERROR, xception->type, "application error: %s", xception->message);
    g_object_unref (xception);
    return FALSE;
  } else if (mtype != T_REPLY) {
    if (fname) g_free (fname);
    thrift_protocol_skip (protocol, T_STRUCT, NULL);
    thrift_protocol_read_message_end (protocol, NULL);
    thrift_transport_read_end (protocol->transport, NULL);
    g_set_error (error, THRIFT_APPLICATION_EXCEPTION_ERROR, THRIFT_APPLICATION_EXCEPTION_ERROR_INVALID_MESSAGE_TYPE, "invalid message type %d, expected T_REPLY", mtype);
    return FALSE;
  } else if (strncmp (fname, "getStr", 6) != 0) {
    thrift_protocol_skip (protocol, T_STRUCT, NULL);
    thrift_protocol_read_message_end (protocol, error);
    thrift_transport_read_end (protocol->transport, error);
    g_set_error (error, THRIFT_APPLICATION_EXCEPTION_ERROR, THRIFT_APPLICATION_EXCEPTION_ERROR_WRONG_METHOD_NAME, "wrong method name %s, expected getStr", fname);
    if (fname) g_free (fname);
    return FALSE;
  }
........

there isn't the implementation of Service in the thrift-nano lib'

@dplord
Copy link
Author

dplord commented Dec 16, 2016

@markrileybot anyway thrift-nano is a great project, thanks your work
I will study thrift-nano during this days

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants