/// <exception cref="System.IO.IOException"/> public virtual ProtocolSignature GetProtocolSignature(string protocol, long clientVersion , int clientMethodsHashCode) { Type inter; try { inter = (Type)GetType().GetGenericInterfaces()[0]; } catch (Exception e) { throw new IOException(e); } return(ProtocolSignature.GetProtocolSignature(clientMethodsHashCode, GetProtocolVersion (protocol, clientVersion), inter)); }
/// <summary>Get a server protocol's signature</summary> /// <param name="server">server implementation</param> /// <param name="protocol">server protocol</param> /// <param name="clientVersion">client's version</param> /// <param name="clientMethodsHash">client's protocol's hash code</param> /// <returns>the server protocol's signature</returns> /// <exception cref="System.IO.IOException">if any error occurs</exception> public static ProtocolSignature GetProtocolSignature(VersionedProtocol server, string protocol, long clientVersion, int clientMethodsHash) { Type inter; try { inter = (Type)Runtime.GetType(protocol); } catch (Exception e) { throw new IOException(e); } long serverVersion = server.GetProtocolVersion(protocol, clientVersion); return(ProtocolSignature.GetProtocolSignature(clientMethodsHash, serverVersion, inter )); }
/// <exception cref="Com.Google.Protobuf.ServiceException"/> public virtual ProtocolInfoProtos.GetProtocolSignatureResponseProto GetProtocolSignature (RpcController controller, ProtocolInfoProtos.GetProtocolSignatureRequestProto request ) { ProtocolInfoProtos.GetProtocolSignatureResponseProto.Builder builder = ProtocolInfoProtos.GetProtocolSignatureResponseProto .NewBuilder(); string protocol = request.GetProtocol(); string rpcKind = request.GetRpcKind(); long[] versions; try { versions = GetProtocolVersionForRpcKind(RPC.RpcKind.ValueOf(rpcKind), protocol); } catch (TypeLoadException e1) { throw new ServiceException(e1); } if (versions == null) { return((ProtocolInfoProtos.GetProtocolSignatureResponseProto)builder.Build()); } foreach (long v in versions) { ProtocolInfoProtos.ProtocolSignatureProto.Builder sigBuilder = ProtocolInfoProtos.ProtocolSignatureProto .NewBuilder(); sigBuilder.SetVersion(v); try { ProtocolSignature signature = ProtocolSignature.GetProtocolSignature(protocol, v); foreach (int m in signature.GetMethods()) { sigBuilder.AddMethods(m); } } catch (TypeLoadException e) { throw new ServiceException(e); } builder.AddProtocolSignature(((ProtocolInfoProtos.ProtocolSignatureProto)sigBuilder .Build())); } return((ProtocolInfoProtos.GetProtocolSignatureResponseProto)builder.Build()); }