summaryrefslogtreecommitdiff
path: root/cpp/src/slice2java/Gen.cpp
diff options
context:
space:
mode:
authorMichi Henning <michi@zeroc.com>2009-12-09 15:12:12 +1000
committerMichi Henning <michi@zeroc.com>2009-12-09 15:12:12 +1000
commitd0d27bb7cf7b5ff8f9f3028f63f650f1d0b01678 (patch)
tree9524523d712bca42f6bd36fabd72c76371ecdca8 /cpp/src/slice2java/Gen.cpp
parentMerge branch 'master' of ssh://cvs.zeroc.com/home/git/ice (diff)
parentfix for cpp/test/Ice/Makefile.mak (diff)
downloadice-d0d27bb7cf7b5ff8f9f3028f63f650f1d0b01678.tar.bz2
ice-d0d27bb7cf7b5ff8f9f3028f63f650f1d0b01678.tar.xz
ice-d0d27bb7cf7b5ff8f9f3028f63f650f1d0b01678.zip
Merge branch 'master' of ssh://cvs.zeroc.com/home/git/ice
Diffstat (limited to 'cpp/src/slice2java/Gen.cpp')
-rw-r--r--cpp/src/slice2java/Gen.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp
index 27d534ce518..0e41c8fd242 100644
--- a/cpp/src/slice2java/Gen.cpp
+++ b/cpp/src/slice2java/Gen.cpp
@@ -2277,6 +2277,52 @@ Slice::Gen::TypesVisitor::visitClassDefStart(const ClassDefPtr& p)
writeThrowsClause(package, throws);
}
out << ';';
+
+ //
+ // Generate asynchronous API for local operations marked with XXX metadata.
+ //
+ if(p->hasMetaData("async") || op->hasMetaData("async"))
+ {
+ vector<string> inParams = getInOutParams(op, package, InParam);
+
+ out << sp;
+ writeDocCommentAMI(out, op, InParam);
+ out << nl;
+ if(!p->isInterface())
+ {
+ out << "public abstract ";
+ }
+ out << "Ice.AsyncResult begin_" << opname << spar << inParams << epar << ';';
+
+ out << sp;
+ writeDocCommentAMI(out, op, InParam);
+ out << nl;
+ if(!p->isInterface())
+ {
+ out << "public abstract ";
+ }
+ out << "Ice.AsyncResult begin_" << opname << spar << inParams << "Ice.Callback __cb" << epar << ';';
+
+ out << sp;
+ writeDocCommentAMI(out, op, InParam);
+ out << nl;
+ if(!p->isInterface())
+ {
+ out << "public abstract ";
+ }
+ string cb = "Callback_" + name + "_" + opname + " __cb";
+ out << "Ice.AsyncResult begin_" << opname << spar << inParams << cb << epar << ';';
+
+ vector<string> outParams = getInOutParams(op, package, OutParam);
+ out << sp;
+ writeDocCommentAMI(out, op, OutParam);
+ out << nl;
+ if(!p->isInterface())
+ {
+ out << "public abstract ";
+ }
+ out << retS << " end_" << opname << spar << outParams << "Ice.AsyncResult __result" << epar << ';';
+ }
}
}