* IPeerConnectorContract.cs : use wildcard for the actual message
transfer operation.
* ServiceHostBase.cs : wildcard action support was not working
for one-way channels.
svn path=/trunk/mcs/; revision=140059
+2009-08-17 Atsushi Enomoto <atsushi@ximian.com>
+
+ * IPeerConnectorContract.cs : use wildcard for the actual message
+ transfer operation.
+
2009-08-17 Atsushi Enomoto <atsushi@ximian.com>
* IPeerConnectorContract.cs : fix internal member name to get
2009-08-17 Atsushi Enomoto <atsushi@ximian.com>
* IPeerConnectorContract.cs : fix internal member name to get
[OperationContract (Action = Consts.Namespace + "/Ping", IsOneWay = true)]
void Ping ();
[OperationContract (Action = Consts.Namespace + "/Ping", IsOneWay = true)]
void Ping ();
- [OperationContract (IsOneWay = true)]
+ [OperationContract (Action = "*", IsOneWay = true)]
void SendMessage (Message msg);
}
void SendMessage (Message msg);
}
+2009-08-17 Atsushi Enomoto <atsushi@ximian.com>
+
+ * ServiceHostBase.cs : wildcard action support was not working
+ for one-way channels.
+
2009-08-17 Atsushi Enomoto <atsushi@ximian.com>
* ServiceHostBase.cs : set expected AddressFilter.
2009-08-17 Atsushi Enomoto <atsushi@ximian.com>
* ServiceHostBase.cs : set expected AddressFilter.
- 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 (
//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);
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 &&
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))
if (md.Body.ReturnValue.Type == typeof (Message))
o.SerializeReply = false;
else if (md.Body.ReturnValue.Type == typeof (void))
+ no_serialized_reply = true;
// Setup Formater
o.Formatter = BaseMessagesFormatter.Create (od);
// 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)
//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;
}
db.UnhandledDispatchOperation = o;
}