diff options
-rw-r--r-- | extras/sasl/Makefile.am | 2 | ||||
-rw-r--r-- | extras/sasl/configure.ac | 1 | ||||
-rw-r--r-- | extras/sasl/include/saslwrapper.h | 5 | ||||
-rw-r--r-- | extras/sasl/ruby/Makefile.am | 43 | ||||
-rw-r--r-- | extras/sasl/ruby/ruby.i | 124 |
5 files changed, 169 insertions, 6 deletions
diff --git a/extras/sasl/Makefile.am b/extras/sasl/Makefile.am index fe8ab08d57..efa6d4f2d3 100644 --- a/extras/sasl/Makefile.am +++ b/extras/sasl/Makefile.am @@ -23,7 +23,7 @@ AUTOMAKE_OPTIONS = 1.9.2 foreign ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = LICENSE -SUBDIRS = src python +SUBDIRS = src python ruby # Update libtool, if needed. libtool: $(LIBTOOL_DEPS) diff --git a/extras/sasl/configure.ac b/extras/sasl/configure.ac index d4018b936d..bc0fadbb31 100644 --- a/extras/sasl/configure.ac +++ b/extras/sasl/configure.ac @@ -312,6 +312,7 @@ AC_CONFIG_FILES([ Makefile src/Makefile python/Makefile + ruby/Makefile ]) AC_OUTPUT diff --git a/extras/sasl/include/saslwrapper.h b/extras/sasl/include/saslwrapper.h index 3413933d98..bb2a9af7ff 100644 --- a/extras/sasl/include/saslwrapper.h +++ b/extras/sasl/include/saslwrapper.h @@ -1,6 +1,3 @@ -#ifndef _BINDINGS_SASLWRAPPER_H_ -#define _BINDINGS_SASLWRAPPER_H_ 1 - /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -147,5 +144,3 @@ namespace saslwrapper { }; } - -#endif diff --git a/extras/sasl/ruby/Makefile.am b/extras/sasl/ruby/Makefile.am new file mode 100644 index 0000000000..7112a647dc --- /dev/null +++ b/extras/sasl/ruby/Makefile.am @@ -0,0 +1,43 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +if HAVE_SWIG +if HAVE_RUBY_DEVEL + +EXTRA_DIST = ruby.i +INCLUDES = -I$(top_srcdir)/include + +generated_file_list = saslwrapper.cpp +BUILT_SOURCES = $(generated_file_list) + +$(generated_file_list): ruby.i $(top_srcdir)/src/saslwrapper.i + $(SWIG) -c++ -ruby -Wall -I/usr/include $(INCLUDES) -o saslwrapper.cpp $(srcdir)/ruby.i + +rubylibdir = $(RUBY_LIB) +lib_LTLIBRARIES = saslwrapper.la + +saslwrapper_la_LDFLAGS = -avoid-version -module -shared ".$(RUBY_DLEXT)" +saslwrapper_la_LIBADD = $(RUBY_LIBS) $(top_builddir)/src/libsaslwrapper.la -lsasl2 +saslwrapper_la_CXXFLAGS = $(INCLUDES) -I$(RUBY_INC) -I$(RUBY_INC_ARCH) +nodist_saslwrapper_la_SOURCES = saslwrapper.cpp + +CLEANFILES = $(generated_file_list) + +endif +endif diff --git a/extras/sasl/ruby/ruby.i b/extras/sasl/ruby/ruby.i new file mode 100644 index 0000000000..7c20f7f071 --- /dev/null +++ b/extras/sasl/ruby/ruby.i @@ -0,0 +1,124 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +%module saslwrapper +%include "typemaps.i" +%include "stl.i" + +%{ +#include "saslwrapper.h" +%} + +%typemap (in) void * +{ + $1 = (void *) $input; +} + +%typemap (out) void * +{ + $result = (VALUE) $1; +} + +%typemap (in) uint16_t +{ + $1 = NUM2UINT($input); +} + +%typemap (out) uint16_t +{ + $result = UINT2NUM((uint16_t) $1); +} + +%typemap (in) uint32_t +{ + if (TYPE($input) == T_BIGNUM) + $1 = NUM2UINT($input); + else + $1 = FIX2UINT($input); +} + +%typemap (out) uint32_t +{ + $result = UINT2NUM((uint32_t) $1); +} + +%typemap (in) int32_t +{ + if (TYPE($input) == T_BIGNUM) + $1 = NUM2INT($input); + else + $1 = FIX2INT($input); +} + +%typemap (out) int32_t +{ + $result = INT2NUM((int32_t) $1); +} + +%typemap (typecheck, precedence=SWIG_TYPECHECK_INTEGER) uint32_t { + $1 = FIXNUM_P($input); +} + +%typemap (in) uint64_t +{ + if (TYPE($input) == T_BIGNUM) + $1 = NUM2ULL($input); + else + $1 = (uint64_t) FIX2LONG($input); +} + +%typemap (out) uint64_t +{ + $result = ULL2NUM((uint64_t) $1); +} + +%typemap (in) int64_t +{ + if (TYPE($input) == T_BIGNUM) + $1 = NUM2LL($input); + else + $1 = (int64_t) FIX2LONG($input); +} + +%typemap (out) int64_t +{ + $result = LL2NUM((int64_t) $1); +} + +%typemap (typecheck, precedence=SWIG_TYPECHECK_INTEGER) uint64_t { + $1 = FIXNUM_P($input); +} + +namespace saslwrapper { + class Client { + public: + + Client(); + ~Client(); + bool setAttr(const std::string& INPUT, const std::string& INPUT); + bool setAttr(const std::string& INPUT, uint32_t INPUT); + bool init(); + bool start(const std::string& INPUT, std::string& OUTPUT, std::string& OUTPUT); + bool step(const std::string& INPUT, std::string& OUTPUT); + bool encode(const std::string& INPUT, std::string& OUTPUT); + bool decode(const std::string& INPUT, std::string& OUTPUT); + bool getUserId(std::string& OUTPUT); + void getError(std::string& OUTPUT); + }; +} |