private WrappedServiceSubscriptionFilter SubscribeService_LoadFilter(ServiceSubscriptionFilter filter) { WrappedServiceSubscriptionFilter filter2 = null; if (filter != null) { filter2 = new WrappedServiceSubscriptionFilter(); if (filter.ServiceNames != null) { foreach (string s in filter.ServiceNames) { filter2.ServiceNames.Add(s); } } if (filter.TransportSchemes != null) { foreach (string s in filter.TransportSchemes) { filter2.TransportSchemes.Add(s); } } filter2.MaxConnections = filter.MaxConnections; if (filter.Nodes != null) { var nodes2 = new vectorptr_wrappedservicesubscriptionnode(); foreach (var n1 in filter.Nodes) { if (n1 == null) { continue; } var n2 = new WrappedServiceSubscriptionFilterNode(); n2.NodeID = n1.NodeID ?? NodeID.GetAny(); n2.NodeName = n1.NodeName ?? ""; n2.Username = n1.Username ?? ""; if (n1.Credentials != null) { n2.Credentials = (MessageElementData)this.PackMapType <string, object>(n1.Credentials); } nodes2.Add(n2); } filter2.Nodes = nodes2; } if (filter.Predicate != null) { var director = new WrappedServiceSubscriptionFilterPredicateDirectorNET(filter.Predicate); int id = RRObjectHeap.AddObject(director); filter2.SetRRPredicateDirector(director, id); } } return(filter2); }
public ServiceSubscription SubscribeServiceByType(string[] service_types, ServiceSubscriptionFilter filter = null) { var filter2 = SubscribeService_LoadFilter(filter); var service_types2 = new vectorstring(); foreach (string s in service_types) { service_types2.Add(s); } var sub1 = RobotRaconteurNET.WrappedSubscribeServiceByType(this, service_types2, filter2); return(new ServiceSubscription(sub1)); }