Home Help Center

Helper Classes not Generated

zhizhi Member Zhi Quan LeeOrganization: University of AucklandProject: Dynamic Reconfiguration with Correctness Assurance ✭✭
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.
#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;
    }
}

Comments

  • mesmes CaliforniaAdministrators, ZeroC Staff Mark SpruiellOrganization: ZeroC, Inc.Project: Ice Developer ZeroC Staff
    Hi,

    An instance of a Slice class is marshaled using OutputStream.writeObject.

    Take care,
    - Mark
  • zhizhi Member Zhi Quan LeeOrganization: University of AucklandProject: Dynamic Reconfiguration with Correctness Assurance ✭✭
    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.
  • michimichi Member Michi HenningOrganization: Triodia TechnologiesProject: I have a passing interest in Ice :-) ✭✭✭
    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.
  • zhizhi Member Zhi Quan LeeOrganization: University of AucklandProject: Dynamic Reconfiguration with Correctness Assurance ✭✭
    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.
  • matthewmatthew NL, CanadaMember Matthew NewhookOrganization: ZeroC, Inc.Project: Internet Communications Engine ✭✭✭
    Pass --stream to the slice2java compiler. See 35.2.2 in the Ice manual.
Sign In or Register to comment.