protected void Invoke <TREQUEST>(CFInvokeInfo info, TREQUEST request) { CFContractSerializerInfo serializerInfo = new CFContractSerializerInfo(); serializerInfo.MessageContractType = typeof(TREQUEST); serializerInfo.IsWrapped = info.RequestIsWrapped; serializerInfo.ExtraTypes = info.ExtraTypes; serializerInfo.UseEncoded = info.UseEncoded; System.ServiceModel.Channels.Message msg = System.ServiceModel.Channels.Message.CreateMessage(this.binding.MessageVersion, info.Action, request, GetContractSerializer(serializerInfo)); if (info.IsOneWay) { if ((this._outputChannelFactory != null)) { this.postOneWayMessage(msg); } else { this.getReply(msg); } } else { this.processReply(this.getReply(msg)); } }
public CFContractSerializer(CFContractSerializerInfo info) { this.info = info; if ((this.info.ExtraTypes == null)) { this.info.ExtraTypes = new System.Type[0]; } this.createSerializer(null); }
protected TRESPONSE Invoke <TREQUEST, TRESPONSE>(CFInvokeInfo info, TREQUEST request) { CFContractSerializerInfo serializerInfo = new CFContractSerializerInfo(); serializerInfo.MessageContractType = typeof(TREQUEST); serializerInfo.IsWrapped = info.RequestIsWrapped; serializerInfo.ExtraTypes = info.ExtraTypes; serializerInfo.UseEncoded = info.UseEncoded; System.ServiceModel.Channels.Message msg = System.ServiceModel.Channels.Message.CreateMessage(this.binding.MessageVersion, info.Action, request, GetContractSerializer(serializerInfo)); return(this.getResult <TRESPONSE>(this.getReply(msg), info)); }
private TRESPONSE getResult <TRESPONSE>(System.ServiceModel.Channels.Message reply, CFInvokeInfo info) { System.Diagnostics.Debug.Assert((reply != null)); this.processReply(reply); TRESPONSE retVal = default(TRESPONSE); if ((reply.IsEmpty == false)) { CFContractSerializerInfo serializerInfo = new CFContractSerializerInfo(); serializerInfo.MessageContractType = typeof(TRESPONSE); serializerInfo.IsWrapped = info.ResponseIsWrapped; serializerInfo.IsResponse = true; serializerInfo.ExtraTypes = info.ExtraTypes; serializerInfo.UseEncoded = info.UseEncoded; retVal = reply.GetBody <TRESPONSE>(this.GetContractSerializer(serializerInfo)); } return(retVal); }
protected virtual System.Runtime.Serialization.XmlObjectSerializer GetContractSerializer(CFContractSerializerInfo info) { System.Runtime.Serialization.XmlObjectSerializer serializer; System.Threading.Monitor.Enter(this.serializers); try { if (serializers.ContainsKey(info)) { serializer = this.serializers[info]; } else { serializer = new CFContractSerializer(info); serializers[info] = serializer; } } finally { System.Threading.Monitor.Exit(this.serializers); } return(serializer); }