com.google.protobuf
Class RpcUtil

java.lang.Object
  extended by com.google.protobuf.RpcUtil

public final class RpcUtil
extends java.lang.Object

Grab-bag of utility functions useful when dealing with RPCs.

Author:
[email protected] Kenton Varda

Nested Class Summary
static class RpcUtil.AlreadyCalledException
          Exception thrown when a one-time callback is called more than once.
 
Method Summary
static
<Type extends Message>
RpcCallback<Message>
generalizeCallback(RpcCallback<Type> originalCallback, java.lang.Class<Type> originalClass, Type defaultInstance)
          Take an RpcCallback accepting a specific message type and convert it to an RpcCallback<Message>.
static
<ParameterType>
RpcCallback<ParameterType>
newOneTimeCallback(RpcCallback<ParameterType> originalCallback)
          Creates a callback which can only be called once.
static
<Type extends Message>
RpcCallback<Type>
specializeCallback(RpcCallback<Message> originalCallback)
          Take an RpcCallback<Message> and convert it to an RpcCallback accepting a specific message type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

specializeCallback

public static <Type extends Message> RpcCallback<Type> specializeCallback(RpcCallback<Message> originalCallback)
Take an RpcCallback<Message> and convert it to an RpcCallback accepting a specific message type. This is always type-safe (parameter type contravariance).


generalizeCallback

public static <Type extends Message> RpcCallback<Message> generalizeCallback(RpcCallback<Type> originalCallback,
                                                                             java.lang.Class<Type> originalClass,
                                                                             Type defaultInstance)
Take an RpcCallback accepting a specific message type and convert it to an RpcCallback<Message>. The generalized callback will accept any message object which has the same descriptor, and will convert it to the correct class before calling the original callback. However, if the generalized callback is given a message with a different descriptor, an exception will be thrown.


newOneTimeCallback

public static <ParameterType> RpcCallback<ParameterType> newOneTimeCallback(RpcCallback<ParameterType> originalCallback)
Creates a callback which can only be called once. This may be useful for security, when passing a callback to untrusted code: most callbacks do not expect to be called more than once, so doing so may expose bugs if it is not prevented.



Copyright © 2008-2011 Google. All Rights Reserved.