Skip to content

Commit

Permalink
Added library version singleton
Browse files Browse the repository at this point in the history
  • Loading branch information
piersharding committed Nov 1, 2012
1 parent 293d524 commit fa85c0c
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 26 deletions.
4 changes: 4 additions & 0 deletions ChangeLog
Expand Up @@ -22,3 +22,7 @@ Thu Dec 11 09:51:47 NZDT 2008

Mon May 28 09:33:39 NZST 2012
* fix 4 byte char buffers

Fri Nov 2 07:21:42 NZDT 2012
* added function SAPNW::RFC.LibVersion() for determining the NW RFC SDK library version

22 changes: 12 additions & 10 deletions MANIFEST
Expand Up @@ -17,19 +17,21 @@ ext/nwsaprfc/extconf.rb
ext/nwsaprfc/MANIFEST
ext/nwsaprfc/nwsaprfc.c
ext/nwsaprfc/post-setup.rb
test/sap.yml
alternate_sap.yml
test/testsuite.rb
test/test_logger.rb
test/test_config.rb
test/test_attributes.rb
test/test_connect.rb
test/test_changing.rb
test/test_functions.rb
test/test_structure.rb
test/ubuntu.yml
test/test_call.rb
test/test_data.rb
test/test_sflight.rb
test/test_deep.rb
test/testregister.rb
test/stfc_connection.rb
test/test_functions.rb
test/test_sflight.rb
test/test_logger.rb
test/test_xml.rb
test/testsuite.rb
test/test_changing.rb
test/testregister2.rb
test/work.yml
test/test_connect.rb
test/testregister.rb
tools/u16lit.pl
45 changes: 33 additions & 12 deletions ext/nwsaprfc/nwsaprfc.c
Expand Up @@ -2679,51 +2679,72 @@ static VALUE error_error(VALUE obj)
}


static VALUE sapnwrfc_lib_version(VALUE class)
{
char * ver;
int len;
unsigned majorVersion, minorVersion, patchLevel;
VALUE ret;

ver = make_space(100);

RfcGetVersion(&majorVersion, &minorVersion, &patchLevel);

len = sprintf(ver, "major: %d minor: %d patch: %d",
majorVersion, minorVersion, patchLevel);
ret = rb_str_new(ver, len);
free(ver);
return(ret);
}



/* create a module init function */
void
Init_nwsaprfc(void) {

/* create global for server functions map */
global_server_functions = rb_hash_new();
rb_global_variable(&global_server_functions);
rb_global_variable(&global_server_functions);

/* create the new module */
mSAPNW = rb_define_module("SAPNW");
mSAPNW = rb_define_module("SAPNW");
mSAPNW_RFC = rb_define_module_under(mSAPNW, "RFC");
rb_define_singleton_method(mSAPNW_RFC, "LibVersion", sapnwrfc_lib_version, 0);
cSAPNW_RFC_HANDLE = rb_define_class_under(mSAPNW_RFC, "Handle", rb_cObject);
cSAPNW_RFC_SERVERHANDLE = rb_define_class_under(mSAPNW_RFC, "ServerHandle", rb_cObject);
cSAPNW_RFC_FUNCDESC = rb_define_class_under(mSAPNW_RFC, "FunctionDescriptor", rb_cObject);
cSAPNW_RFC_FUNC_CALL = rb_define_class_under(mSAPNW_RFC, "FunctionCall", rb_cObject);
cSAPNW_RFC_CONNEXCPT = rb_define_class_under(mSAPNW_RFC, "ConnectionException", rb_eException);
cSAPNW_RFC_SERVEXCPT = rb_define_class_under(mSAPNW_RFC, "ServerException", rb_eException);
cSAPNW_RFC_FUNCEXCPT = rb_define_class_under(mSAPNW_RFC, "FunctionCallException", rb_eException);
rb_define_method(cSAPNW_RFC_CONNEXCPT, "error", error_error, 0);
rb_define_method(cSAPNW_RFC_SERVEXCPT, "error", error_error, 0);
rb_define_method(cSAPNW_RFC_FUNCEXCPT, "error", error_error, 0);
rb_define_method(cSAPNW_RFC_CONNEXCPT, "error", error_error, 0);
rb_define_method(cSAPNW_RFC_SERVEXCPT, "error", error_error, 0);
rb_define_method(cSAPNW_RFC_FUNCEXCPT, "error", error_error, 0);

/* define Handle methods */
rb_define_singleton_method(cSAPNW_RFC_HANDLE, "new", SAPNW_RFC_HANDLE_new, 1);
/* define Handle methods */
rb_define_singleton_method(cSAPNW_RFC_HANDLE, "new", SAPNW_RFC_HANDLE_new, 1);
rb_define_method(cSAPNW_RFC_HANDLE, "connection_attributes", SAPNW_RFC_HANDLE_connection_attributes, 0);
rb_define_method(cSAPNW_RFC_HANDLE, "reset_server_context", SAPNW_RFC_HANDLE_reset_server_context, 0);
rb_define_method(cSAPNW_RFC_HANDLE, "function_lookup", SAPNW_RFC_HANDLE_function_lookup, 3);
rb_define_method(cSAPNW_RFC_HANDLE, "close", SAPNW_RFC_HANDLE_close, 0);
rb_define_method(cSAPNW_RFC_HANDLE, "ping", SAPNW_RFC_HANDLE_ping, 0);

/* define ServerHandle methods */
rb_define_singleton_method(cSAPNW_RFC_SERVERHANDLE, "new", SAPNW_RFC_SERVERHANDLE_new, 1);
/* define ServerHandle methods */
rb_define_singleton_method(cSAPNW_RFC_SERVERHANDLE, "new", SAPNW_RFC_SERVERHANDLE_new, 1);
rb_define_method(cSAPNW_RFC_SERVERHANDLE, "connection_attributes", SAPNW_RFC_SERVERHANDLE_connection_attributes, 0);
rb_define_method(cSAPNW_RFC_SERVERHANDLE, "accept_loop", SAPNW_RFC_SERVERHANDLE_accept, 2);
rb_define_method(cSAPNW_RFC_SERVERHANDLE, "process_loop", SAPNW_RFC_SERVERHANDLE_process, 1);
rb_define_method(cSAPNW_RFC_SERVERHANDLE, "close", SAPNW_RFC_SERVERHANDLE_close, 0);

/* define FunctionDescription methods */
rb_define_singleton_method(cSAPNW_RFC_FUNCDESC, "new", SAPNW_RFC_FUNCDESC_new, 1);
/* define FunctionDescription methods */
rb_define_singleton_method(cSAPNW_RFC_FUNCDESC, "new", SAPNW_RFC_FUNCDESC_new, 1);
rb_define_method(cSAPNW_RFC_FUNCDESC, "add_parameter", SAPNW_RFC_FUNCDESC_add_parameter, 1);
rb_define_method(cSAPNW_RFC_FUNCDESC, "enable_XML", SAPNW_RFC_FUNCDESC_enable_XML, 0);
rb_define_method(cSAPNW_RFC_FUNCDESC, "create_function_call", SAPNW_RFC_FUNCDESC_create_function_call, 1);
rb_define_method(cSAPNW_RFC_FUNCDESC, "install", SAPNW_RFC_FUNCDESC_install, 1);

/* define FunctionCall methods */
/* define FunctionCall methods */
rb_define_method(cSAPNW_RFC_FUNC_CALL, "invoke", SAPNW_RFC_FUNC_CALL_invoke, 0);
rb_define_method(cSAPNW_RFC_FUNC_CALL, "set_active", SAPNW_RFC_FUNC_CALL_set_active, 2);
}
Expand Down
4 changes: 2 additions & 2 deletions mkdist.sh
@@ -1,11 +1,11 @@
#!/bin/sh
BASE=/home/piers/code/ruby/sapnwrfc
BASE=/home/piers/git/public/ruby-sapnwrfc
cd $BASE
find . -name '*.log' -type f -exec echo \> {} \;
find . -name 'rfc*trc' -type f -exec rm -f {} \;
find . -name '*~' -type f -exec rm -f {} \;

VERS=0.24
VERS=0.25
DIST=sapnwrfc-$VERS
BALL=$DIST.tar.gz
ZIP=$DIST.zip
Expand Down
2 changes: 1 addition & 1 deletion sapnwrfc.linux.gemspec
Expand Up @@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
sapnwrfc is a ruby module for performing RFC functions and BAPI calls on
an SAP Netweaver system NW2004+
EOF
spec.version = '0.24'
spec.version = '0.25'
spec.autorequire = [ 'sapnwrfc' ]
spec.platform = Config::CONFIG["arch"]
spec.homepage = 'http://www.piersharding.com'
Expand Down
2 changes: 1 addition & 1 deletion sapnwrfc.mswin32.gemspec
Expand Up @@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
sapnwrfc is a ruby module for performing RFC functions and BAPI calls on
an SAP Netweaver system NW2004+
EOF
spec.version = '0.24'
spec.version = '0.25'
spec.autorequire = [ 'sapnwrfc' ]
spec.platform = Gem::Platform::WIN32
spec.homepage = 'http://www.piersharding.com'
Expand Down

0 comments on commit fa85c0c

Please sign in to comment.