+
+ void exception_to_array(::System::VStruct *ex, Array<uint8_t> *ar)
+ {
+ ar->ptr = reinterpret_cast<uint8_t *>(ex);
+ ar->count = ex->_infoptr->structlen;
+ }
+
+ void handle_message(ParameterInfoBlock *pib)
+ {
+ Message *msg = reinterpret_cast<Message *>(pib->segments[0].ptr);
+
+ switch (seg0->opcode) {
+ case Segment0::InvokeMethod: {
+ if (pib->segments[0].len < sizeof(InvokeMessage))
+ throw_idl(ShortMessage, 0, pib->segments[0].len,
+ sizeof(InvokeMessage));
+
+ ID obj = pib->objlist[0];
+
+
+ break;
+ }
+
+ default:
+ throw_idl(InvalidOpcode, seg0->opcode);
+ }
+ }
+ }
+}}
+
+extern "C" handle_message(ParameterInfoaBlock *pib, Array<uint8_t> *ex_arr)
+{
+ try {
+ ::System::RunTime::handle_message(pib);
+ }
+
+ catch (::System::Exception *ex) {
+ exception_to_array(ex, ex_arr);
+ }
+
+ catch (...) {
+ assertl(0, Assert::Always);