}
- internal ChannelDispatcher BuildChannelDispatcher (ServiceEndpoint se, BindingParameterCollection commonParams) {
-
+ internal ChannelDispatcher BuildChannelDispatcher (ServiceEndpoint se, BindingParameterCollection commonParams)
+ {
//User the binding parameters to build the channel listener and Dispatcher
IChannelListener lf = BuildListener (se, commonParams);
ChannelDispatcher cd = new ChannelDispatcher (
od.IsOneWay ?
new DispatchOperation (db, od.Name, reqA) :
new DispatchOperation (db, od.Name, reqA, resA);
- bool has_void_reply = false;
+ bool no_serialized_reply = od.IsOneWay;
foreach (MessageDescription md in od.Messages) {
if (md.Direction == MessageDirection.Input &&
md.Body.Parts.Count == 1 &&
if (md.Body.ReturnValue.Type == typeof (Message))
o.SerializeReply = false;
else if (md.Body.ReturnValue.Type == typeof (void))
- has_void_reply = true;
+ no_serialized_reply = true;
}
}
// Setup Formater
o.Formatter = BaseMessagesFormatter.Create (od);
- if (o.Action == "*" && o.ReplyAction == "*") {
+ if (o.Action == "*" && (o.IsOneWay || o.ReplyAction == "*")) {
//Signature : Message (Message)
// : void (Message)
//FIXME: void (IChannel)
- if (!o.DeserializeRequest && (!o.SerializeReply || has_void_reply))
+ if (!o.DeserializeRequest && (!o.SerializeReply || no_serialized_reply)) // what is this double-ish check for?
db.UnhandledDispatchOperation = o;
}