Archived
This forum has been archived. Please start a new discussion on GitHub.
Helper Classes not Generated
in Help Center
Hi, I'm trying to follow the streaming example to use streaming in my application. However, the helper class needed to perform this operation - KodkodModelHelper.write(out, c)) is not generated.
The generated classes are:
KodkodModel, KodkodModelHolder, KodkodModelPrx, KodkodModelPrxHelper and KodkodModelPrxHolder but there is no KodkodModelHelper.
Is there something I missed in the SLICE descriptor?
Here is the code for KodkodModel.java:
#ifndef INVOKE_ICE #define INVOKE_ICE module OpenRec2 { exception PrintFailure { string reason; }; class KodkodModel { void solve(); }; #endif
The generated classes are:
KodkodModel, KodkodModelHolder, KodkodModelPrx, KodkodModelPrxHelper and KodkodModelPrxHolder but there is no KodkodModelHelper.
Is there something I missed in the SLICE descriptor?
Here is the code for KodkodModel.java:
// ********************************************************************** // // Copyright (c) 2003-2006 ZeroC, Inc. All rights reserved. // // This copy of Ice is licensed to you under the terms described in the // ICE_LICENSE file included in this distribution. // // ********************************************************************** // Ice version 3.1.1 package OpenRec2; public abstract class KodkodModel extends Ice.ObjectImpl implements _KodkodModelOperations, _KodkodModelOperationsNC { public static final String[] __ids = { "::Ice::Object", "::OpenRec2::KodkodModel" }; public boolean ice_isA(String s) { return java.util.Arrays.binarySearch(__ids, s) >= 0; } public boolean ice_isA(String s, Ice.Current __current) { return java.util.Arrays.binarySearch(__ids, s) >= 0; } public String[] ice_ids() { return __ids; } public String[] ice_ids(Ice.Current __current) { return __ids; } public String ice_id() { return __ids[1]; } public String ice_id(Ice.Current __current) { return __ids[1]; } public static String ice_staticId() { return __ids[1]; } public final void solve() { solve(null); } public static IceInternal.DispatchStatus ___solve(KodkodModel __obj, IceInternal.Incoming __inS, Ice.Current __current) { __checkMode(Ice.OperationMode.Normal, __current.mode); __obj.solve(__current); return IceInternal.DispatchStatus.DispatchOK; } private final static String[] __all = { "ice_id", "ice_ids", "ice_isA", "ice_ping", "solve" }; public IceInternal.DispatchStatus __dispatch(IceInternal.Incoming in, Ice.Current __current) { int pos = java.util.Arrays.binarySearch(__all, __current.operation); if(pos < 0) { return IceInternal.DispatchStatus.DispatchOperationNotExist; } switch(pos) { case 0: { return ___ice_id(this, in, __current); } case 1: { return ___ice_ids(this, in, __current); } case 2: { return ___ice_isA(this, in, __current); } case 3: { return ___ice_ping(this, in, __current); } case 4: { return ___solve(this, in, __current); } } assert(false); return IceInternal.DispatchStatus.DispatchOperationNotExist; } public void __write(IceInternal.BasicStream __os) { __os.writeTypeId(ice_staticId()); __os.startWriteSlice(); __os.endWriteSlice(); super.__write(__os); } public void __read(IceInternal.BasicStream __is, boolean __rid) { if(__rid) { __is.readTypeId(); } __is.startReadSlice(); __is.endReadSlice(); super.__read(__is, true); } public void __write(Ice.OutputStream __outS) { Ice.MarshalException ex = new Ice.MarshalException(); ex.reason = "type OpenRec2::KodkodModel was not generated with stream support"; throw ex; } public void __read(Ice.InputStream __inS, boolean __rid) { Ice.MarshalException ex = new Ice.MarshalException(); ex.reason = "type OpenRec2::KodkodModel was not generated with stream support"; throw ex; } }
0
Comments
-
Hi,
An instance of a Slice class is marshaled using OutputStream.writeObject.
Take care,
- Mark0 -
How do I demarshall it from the stream if I don't want to use in.readObject() as I prefer not to use callback objects. It's just a simple object that needs to be passed across the stream.0
-
There is no other way to unmarshal class instances. The reason is the way classes are marshaled. (See the Ice Protocol chapter in the doc for details.)
Cheers,
Michi.0 -
Thanks. Perhaps you can tell me how the following CHelper class was generated as with the bundled Printer example?
From PrinterI.java:Demo.CHolder c = new Demo.CHolder(); Demo.CHelper.read(in, c); in.readPendingObjects(); in.destroy(); System.out.println("Printing class: s.name=" + c.value.s.name + ", s.value=" + c.value.s.value);
This is exactly what I want to do.0 -
Pass --stream to the slice2java compiler. See 35.2.2 in the Ice manual.0