Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
 public CFContractSerializer(CFContractSerializerInfo info)
 {
     this.info = info;
     if ((this.info.ExtraTypes == null))
     {
         this.info.ExtraTypes = new System.Type[0];
     }
     this.createSerializer(null);
 }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 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);
 }