true
if s
is
* ::Ice::Object
.
**/
public boolean
ice_isA(String s)
{
return s.equals(__ids[0]);
}
/**
* Tests whether this object supports a specific Slice interface.
*
* @param s The type ID of the Slice interface to test against.
* @param current The current object for the invocation.
* @return The return value is true
if s
is
* ::Ice::Object
.
**/
public boolean
ice_isA(String s, Current current)
{
return s.equals(__ids[0]);
}
public static DispatchStatus
___ice_isA(Ice.Object __obj, IceInternal.Incoming __inS, Current __current)
{
IceInternal.BasicStream __is = __inS.is();
__is.startReadEncaps();
String __id = __is.readString();
__is.endReadEncaps();
boolean __ret = __obj.ice_isA(__id, __current);
IceInternal.BasicStream __os = __inS.os();
__os.writeBool(__ret);
return DispatchStatus.DispatchOK;
}
/**
* Tests whether this object can be reached.
**/
public void
ice_ping()
{
// Nothing to do.
}
/**
* Tests whether this object can be reached.
*
* @param current The current object for the invocation.
**/
public void
ice_ping(Current current)
{
// Nothing to do.
}
public static DispatchStatus
___ice_ping(Ice.Object __obj, IceInternal.Incoming __inS, Current __current)
{
__inS.is().skipEmptyEncaps();
__obj.ice_ping(__current);
return DispatchStatus.DispatchOK;
}
/**
* Returns the Slice type IDs of the interfaces supported by this object.
*
* @return An array whose only element is ::Ice::Object
.
**/
public String[]
ice_ids()
{
return __ids;
}
/**
* Returns the Slice type IDs of the interfaces supported by this object.
*
* @param current The current object for the invocation.
* @return An array whose only element is ::Ice::Object
.
**/
public String[]
ice_ids(Current current)
{
return __ids;
}
public static DispatchStatus
___ice_ids(Ice.Object __obj, IceInternal.Incoming __inS, Current __current)
{
__inS.is().skipEmptyEncaps();
String[] __ret = __obj.ice_ids(__current);
IceInternal.BasicStream __os = __inS.os();
__os.writeStringSeq(__ret);
return DispatchStatus.DispatchOK;
}
/**
* Returns the Slice type ID of the most-derived interface supported by this object.
*
* @return The return value is always ::Ice::Object
**/
public String
ice_id()
{
return __ids[0];
}
/**
* Returns the Slice type ID of the most-derived interface supported by this object.
*
* @param current The current object for the invocation.
* @return The return value is always ::Ice::Object
**/
public String
ice_id(Current current)
{
return __ids[0];
}
public static DispatchStatus
___ice_id(Ice.Object __obj, IceInternal.Incoming __inS, Current __current)
{
__inS.is().skipEmptyEncaps();
String __ret = __obj.ice_id(__current);
IceInternal.BasicStream __os = __inS.os();
__os.writeString(__ret);
return DispatchStatus.DispatchOK;
}
/**
* Returns the Slice type ID of the most-derived interface supported by this object.
*
* @return The return value is always ::Ice::Object
.
**/
public static String
ice_staticId()
{
return __ids[0];
}
/**
* Returns the Freeze metadata attributes for an operation.
*
* @param The name of the operation.
* @return The least significant bit indicates whether the operation is a read
* or write operation. If the bit is set, the operation is a write operation.
* The expression ice_operationAttributes("op") & 0x1
is true if
* the operation has a ["freeze:write"]
metadata directive.
*
* The second- and third least significant bit indicate the transactional mode
* of the operation. The expression ice_operationAttributes("op") & 0x6 >> 1
* indicates the transactional mode as follows:
*
* - 0
* ["freeze:read:supports"]
* - 1
* ["freeze:read:mandatory"]
or ["freeze:write:mandatory"]
* - 2
* ["freeze:read:required"]
or ["freeze:write:required"]
* - 3
* ["freeze:read:never"]
*
*
* @see Freeze:TransactionalEvictor
**/
public int ice_operationAttributes(String operation)
{
return 0;
}
/**
* The Ice run time invokes this method prior to marshaling an object's data members. This allows a subclass
* to override this method in order to validate its data members. This default implementation does nothing.
**/
public void
ice_preMarshal()
{
}
/**
* This Ice run time invokes this method vafter unmarshaling an object's data members. This allows a
* subclass to override this method in order to perform additional initialization. This default
* implementation does nothing.
**/
public void
ice_postUnmarshal()
{
}
private final static String[] __all =
{
"ice_id",
"ice_ids",
"ice_isA",
"ice_ping"
};
/**
* Dispatches an invocation to a servant. This method is used by dispatch interceptors to forward an invocation
* to a servant (or to another interceptor).
*
* @param request The details of the invocation.
* @param cb The callback object for asynchchronous dispatch. For synchronous dispatch, the callback object must
* be null
.
* @return The dispatch status for the operation.
*
* @see DispatchInterceptor
* @see DispatchInterceptorAsyncCallback
* @see DispatchStatus
**/
public DispatchStatus
ice_dispatch(Request request, DispatchInterceptorAsyncCallback cb)
{
if(request.isCollocated())
{
return __collocDispatch((IceInternal.Direct)request);
}
else
{
IceInternal.Incoming in = (IceInternal.Incoming)request;
if(cb != null)
{
in.push(cb);
}
try
{
in.startOver(); // may raise ResponseSentException
return __dispatch(in, in.getCurrent());
}
finally
{
if(cb != null)
{
in.pop();
}
}
}
}
public DispatchStatus
__dispatch(IceInternal.Incoming in, Current current)
{
int pos = java.util.Arrays.binarySearch(__all, current.operation);
if(pos < 0)
{
throw new Ice.OperationNotExistException(current.id, current.facet, current.operation);
}
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);
}
}
assert(false);
throw new Ice.OperationNotExistException(current.id, current.facet, current.operation);
}
public DispatchStatus
__collocDispatch(IceInternal.Direct request)
{
return request.run(this);
}
public void
__write(IceInternal.BasicStream __os)
{
__os.writeTypeId(ice_staticId());
__os.startWriteSlice();
__os.writeSize(0); // For compatibility with the old AFM.
__os.endWriteSlice();
}
public void
__read(IceInternal.BasicStream __is, boolean __rid)
{
if(__rid)
{
__is.readTypeId();
}
__is.startReadSlice();
// For compatibility with the old AFM.
int sz = __is.readSize();
if(sz != 0)
{
throw new MarshalException();
}
__is.endReadSlice();
}
public void
__write(Ice.OutputStream __outS)
{
__outS.writeTypeId(ice_staticId());
__outS.startSlice();
__outS.writeSize(0); // For compatibility with the old AFM.
__outS.endSlice();
}
public void
__read(Ice.InputStream __inS, boolean __rid)
{
if(__rid)
{
__inS.readTypeId();
}
__inS.startSlice();
// For compatibility with the old AFM.
int sz = __inS.readSize();
if(sz != 0)
{
throw new MarshalException();
}
__inS.endSlice();
}
private static String
operationModeToString(OperationMode mode)
{
if(mode == Ice.OperationMode.Normal)
{
return "::Ice::Normal";
}
if(mode == Ice.OperationMode.Nonmutating)
{
return "::Ice::Nonmutating";
}
if(mode == Ice.OperationMode.Idempotent)
{
return "::Ice::Idempotent";
}
return "???";
}
protected static void
__checkMode(OperationMode expected, OperationMode received)
{
if(expected != received)
{
if(expected == Ice.OperationMode.Idempotent
&& received == Ice.OperationMode.Nonmutating)
{
//
// Fine: typically an old client still using the
// deprecated nonmutating keyword
//
}
else
{
Ice.MarshalException ex = new Ice.MarshalException();
ex.reason = "unexpected operation mode. expected = "
+ operationModeToString(expected) + " received = "
+ operationModeToString(received);
throw ex;
}
}
}
}