diff options
author | Austin Henriksen <austin@zeroc.com> | 2018-11-20 15:39:13 -0500 |
---|---|---|
committer | Austin Henriksen <austin@zeroc.com> | 2018-11-20 17:20:19 -0500 |
commit | 515315cb5623ead20e02e47d78454e2ac691b42e (patch) | |
tree | c0c54d119e4d4a24c04c5b4470a60ad1d1a347c8 /ruby/src | |
parent | Fixed typo in the Ruby README. (diff) | |
download | ice-515315cb5623ead20e02e47d78454e2ac691b42e.tar.bz2 ice-515315cb5623ead20e02e47d78454e2ac691b42e.tar.xz ice-515315cb5623ead20e02e47d78454e2ac691b42e.zip |
Added missing exceptions to setExceptionMembers in Ruby.
Diffstat (limited to 'ruby/src')
-rw-r--r-- | ruby/src/IceRuby/Util.cpp | 43 | ||||
-rw-r--r-- | ruby/src/IceRuby/Util.h | 6 |
2 files changed, 45 insertions, 4 deletions
diff --git a/ruby/src/IceRuby/Util.cpp b/ruby/src/IceRuby/Util.cpp index dc151808771..88e3396fcfc 100644 --- a/ruby/src/IceRuby/Util.cpp +++ b/ruby/src/IceRuby/Util.cpp @@ -386,6 +386,21 @@ IceRuby::stringSeqToArray(const vector<string>& seq) return result; } +VALUE +IceRuby::createNumSeq(const vector<Ice::Byte>& v) +{ + volatile VALUE result = createArray(v.size()); + long i = 0; + if(v.size() > 0) + { + for(vector<Ice::Byte>::const_iterator p = v.begin(); p != v.end(); ++p, ++i) + { + RARRAY_ASET(result, i, INT2FIX(*p)); + } + } + return result; +} + namespace { @@ -625,6 +640,16 @@ setExceptionMembers(const Ice::LocalException& ex, VALUE p) volatile VALUE v = createString(e.str); callRuby(rb_iv_set, p, "@str", v); } + catch(const Ice::EndpointSelectionTypeParseException& e) + { + volatile VALUE v = createString(e.str); + callRuby(rb_iv_set, p, "@str", v); + } + catch(const Ice::VersionParseException& e) + { + volatile VALUE v = createString(e.str); + callRuby(rb_iv_set, p, "@str", v); + } catch(const Ice::IdentityParseException& e) { volatile VALUE v = createString(e.str); @@ -640,6 +665,11 @@ setExceptionMembers(const Ice::LocalException& ex, VALUE p) volatile VALUE v = IceRuby::createIdentity(e.id); callRuby(rb_iv_set, p, "@id", v); } + catch(const Ice::IllegalServantException& e) + { + volatile VALUE v = createString(e.reason); + callRuby(rb_iv_set, p, "@reason", v); + } catch(const Ice::RequestFailedException& e) { volatile VALUE v; @@ -670,6 +700,11 @@ setExceptionMembers(const Ice::LocalException& ex, VALUE p) v = createString(e.host); callRuby(rb_iv_set, p, "@host", v); } + catch(const Ice::BadMagicException& e) + { + volatile VALUE v = createNumSeq(e.badMagic); + callRuby(rb_iv_set, p, "@badMagic", v); + } catch(const Ice::UnsupportedProtocolException& e) { VALUE m; @@ -709,6 +744,10 @@ setExceptionMembers(const Ice::LocalException& ex, VALUE p) volatile VALUE v = createString(e.reason); callRuby(rb_iv_set, p, "@reason", v); } + catch(const Ice::ConnectionManuallyClosedException& e) + { + callRuby(rb_iv_set, p, "@graceful", e.graceful ? Qtrue : Qfalse); + } catch(const Ice::FeatureNotSupportedException& e) { volatile VALUE v = createString(e.unsupportedFeature); @@ -719,10 +758,6 @@ setExceptionMembers(const Ice::LocalException& ex, VALUE p) volatile VALUE v = createString(e.reason); callRuby(rb_iv_set, p, "@reason", v); } - catch(const Ice::ConnectionManuallyClosedException& e) - { - callRuby(rb_iv_set, p, "@graceful", e.graceful ? Qtrue : Qfalse); - } catch(const Ice::LocalException&) { // diff --git a/ruby/src/IceRuby/Util.h b/ruby/src/IceRuby/Util.h index ca6c256b04d..abb70880c04 100644 --- a/ruby/src/IceRuby/Util.h +++ b/ruby/src/IceRuby/Util.h @@ -91,6 +91,12 @@ bool arrayToStringSeq(VALUE, std::vector<std::string>&); VALUE stringSeqToArray(const std::vector<std::string>&); // +// Convert a vector of Ice::Byte into a Ruby array of numbers. +// May raise RubyException. +// +VALUE createNumSeq(const std::vector<Ice::Byte>&); + +// // Convert a Ruby hash to Ice::Context. Returns true on success // and false if the value is not a hash. May raise RubyException. // |