Exemplo n.º 1
0
        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);
        }