Module: NWRFCLib
- Extended by:
- FFI::Library
- Defined in:
- lib/nwrfc/nwrfclib.rb
Overview
Library wrapper around NW RFC SDK shared library using RUBY-FFI
Defined Under Namespace
Classes: DATA_CONTAINER_HANDLE, RFCConnParam, RFCConnection, RFCDataContainer, RFCError, RFCFieldDesc, RFCFuncParam, RFC_DECF16, RFC_FUNCTION_DESC_HANDLE, RFC_TYPE_DESC_HANDLE
Constant Summary collapse
- Cutf8_to_utf16le =
Iconv.new("UTF-16LE", "UTF-8")
- Cutf16le_to_utf8 =
Iconv.new("UTF-8", "UTF-16LE")
- B_SIZE =
TODO:
Make platform-dependent size based on RUBY_PLATFORM
Multiplier for providing correct byte size for String passed to RFC library
2
- RFC_RC =
enum( :RFC_OK, :RFC_COMMUNICATION_FAILURE, :RFC_LOGON_FAILURE, :RFC_ABAP_RUNTIME_FAILURE, :RFC_ABAP_MESSAGE, :RFC_ABAP_EXCEPTION, :RFC_CLOSED, :RFC_CANCELED, :RFC_TIMEOUT, :RFC_MEMORY_INSUFFICIENT, :RFC_VERSION_MISMATCH, :RFC_INVALID_PROTOCOL, :RFC_SERIALIZATION_FAILURE, :RFC_INVALID_HANDLE, :RFC_RETRY, :RFC_EXTERNAL_FAILURE, :RFC_EXECUTED, :RFC_NOT_FOUND, :RFC_NOT_SUPPORTED, :RFC_ILLEGAL_STATE, :RFC_INVALID_PARAMETER, :RFC_CODEPAGE_CONVERSION_FAILURE, :RFC_CONVERSION_FAILURE, :RFC_BUFFER_TOO_SMALL, :RFC_TABLE_MOVE_BOF, :RFC_TABLE_MOVE_EOF, :RFC_UNKNOWN_ERROR )
- RFC_ERROR_GROUP =
enum( :OK, :ABAP_APPLICATION_FAILURE, :ABAP_RUNTIME_FAILURE, :LOGON_FAILURE, :COMMUNICATION_FAILURE, :EXTERNAL_RUNTIME_FAILURE, :EXTERNAL_APPLICATION_FAILURE )
- RFC_DIRECTION =
enum( :RFC_IMPORT, 1, :RFC_EXPORT, 2, :RFC_CHANGING, 3, :RFC_TABLES, 7 )
- RFC_TYPE =
enum( :RFCTYPE_CHAR , 0, :RFCTYPE_DATE , 1, :RFCTYPE_BCD , 2, :RFCTYPE_TIME , 3, :RFCTYPE_BYTE , 4, :RFCTYPE_TABLE , 5, :RFCTYPE_NUM , 6, :RFCTYPE_FLOAT , 7, :RFCTYPE_INT , 8, :RFCTYPE_INT2 , 9, :RFCTYPE_INT1 , 10, :RFCTYPE_NULL , 14, :RFCTYPE_ABAPOBJECT, 16, :RFCTYPE_STRUCTURE , 17, :RFCTYPE_DECF16 , 23, :RFCTYPE_DECF34 , 24, :RFCTYPE_XMLDATA , 28, :RFCTYPE_STRING , 29, :RFCTYPE_XSTRING , 30, :RFCTYPE_BOX, 31, :RFCTYPE_GENERIC_BOX, 32, :_RFCTYPE_max_value )
Class Method Summary collapse
-
.make_conn_params(params) ⇒ Object
Take Hash of connection parameters and returns FFI pointer to an array for passing to connection — TODO - Ideally, this method should live in nwrfc.rb.
Class Method Details
.make_conn_params(params) ⇒ Object
Take Hash of connection parameters and returns FFI pointer to an array for passing to connection
TODO - Ideally, this method should live in nwrfc.rb
419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 |
# File 'lib/nwrfc/nwrfclib.rb', line 419 def NWRFCLib.make_conn_params(params) #https://github.com/ffi/ffi/wiki/Structs par = FFI::MemoryPointer.new(RFCConnParam, params.length) pars = params.length.times.collect do |i| RFCConnParam.new(par + i * RFCConnParam.size) end #TODO Optimize this method tpar = params.to_a params.length.times do |n| # str = (tpar[n][0].to_s + "\0").encode("UTF-16LE") pars[n][:name] = FFI::MemoryPointer.from_string(tpar[n][0].to_s.cU) # str = (tpar[n][1].to_s + "\0").encode("UTF-16LE") # str = str.encode("UTF-16LE") pars[n][:value] = FFI::MemoryPointer.from_string(tpar[n][1].to_s.cU) end par end |