summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Henriksen <austin@zeroc.com>2018-11-20 15:39:13 -0500
committerAustin Henriksen <austin@zeroc.com>2018-11-20 17:20:19 -0500
commit515315cb5623ead20e02e47d78454e2ac691b42e (patch)
treec0c54d119e4d4a24c04c5b4470a60ad1d1a347c8
parentFixed typo in the Ruby README. (diff)
downloadice-515315cb5623ead20e02e47d78454e2ac691b42e.tar.bz2
ice-515315cb5623ead20e02e47d78454e2ac691b42e.tar.xz
ice-515315cb5623ead20e02e47d78454e2ac691b42e.zip
Added missing exceptions to setExceptionMembers in Ruby.
-rw-r--r--ruby/src/IceRuby/Util.cpp43
-rw-r--r--ruby/src/IceRuby/Util.h6
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.
//