Beispiel #1
0
 public Entry this[ManagedObjectName objectName]
 {
     get
     {
         return((Entry)InnerHashtable[objectName]);
     }
 }
Beispiel #2
0
 public Entry this[ManagedObjectName objectName]
 {
     get
     {
         return (Entry) InnerHashtable[objectName];
     }
 }
Beispiel #3
0
 public void Add(ManagedObjectName objectName, Entry instance)
 {
     lock (this)
     {
         InnerHashtable.Add(objectName, instance);
     }
 }
 private void InvokeBeforeRegister(MRegistrationListener listener, ManagedObjectName name)
 {
     if (listener != null)
     {
         listener.BeforeRegister(server, name);
     }
 }
Beispiel #5
0
 public void Add(ManagedObjectName objectName, Entry instance)
 {
     lock(this)
     {
         InnerHashtable.Add(objectName, instance);
     }
 }
Beispiel #6
0
 public void Remove(ManagedObjectName objectName)
 {
     lock (this)
     {
         InnerHashtable.Remove(objectName);
     }
 }
        public void UnregisterManagedObject(ManagedObjectName name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            String domainName = name.Domain;

            try
            {
                Domain domain = FindDomain(domainName);
                Entry  entry  = domain[name];

                if (entry != null)
                {
                    MRegistrationListener listener = entry.Instance as MRegistrationListener;

                    InvokeBeforeDeregister(listener);

                    domain.Remove(name);

                    InvokeAfterDeregister(listener);
                }
            }
            catch (InvalidDomainException)
            {
            }
        }
		public void BeforeRegister(MServer server, ManagedObjectName name)
		{
			this.server = server;
			this.name = name;

			RegisterServer();
		}
Beispiel #9
0
        public void TestInvoke()
        {
            ManagedObjectName name = new ManagedObjectName("domain.org:type=httpServer");

            try
            {
                Object httpServer = server.Instantiate(httpServerType.Assembly.FullName, httpServerType.FullName);

                ManagedInstance inst = server.RegisterManagedObject(httpServer, name);

                bool state = (bool)server.GetAttribute(name, "Started");
                AssertEquals(false, state);

                server.Invoke(name, "Start", null, null);

                state = (bool)server.GetAttribute(name, "Started");
                AssertEquals(true, state);

                server.Invoke(name, "Stop", null, null);
                state = (bool)server.GetAttribute(name, "Started");
                AssertEquals(false, state);
            }
            finally
            {
                server.UnregisterManagedObject(name);
            }
        }
Beispiel #10
0
		public void Remove(ManagedObjectName objectName)
		{
			lock(this)
			{
				InnerHashtable.Remove(objectName);
			}
		}
        public void BeforeRegister(MServer server, ManagedObjectName name)
        {
            this.server = server;
            this.name   = name;

            RegisterServer();
        }
        public void TestCreation()
        {
            ManagedObjectName name      = new ManagedObjectName("domain.org");
            ManagedInstance   instance1 = new ManagedInstance("typename", name);

            AssertEquals("typename", instance1.TypeName);
            AssertEquals(name, instance1.Name);
        }
        /// <summary>
        /// TODO: Summary
        /// </summary>
        /// <param name="name"></param>
        public void UnregisterManagedObject(ManagedObjectName name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            registry.UnregisterManagedObject(name);
        }
        /// <summary>
        /// Returns the info (attributes and operations) about the specified object.
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        /// <exception cref="InvalidDomainException">If domain name is not found.</exception>
        public ManagementInfo GetManagementInfo(ManagedObjectName name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            return(registry.GetManagementInfo(name));
        }
        public ManagedInstance GetManagedInstance(ManagedObjectName name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            return(new ManagedInstance(GetEntry(name).Instance.GetType().FullName, name));
        }
        /// <summary>
        /// Queries the registerd components.
        /// </summary>
        /// <returns></returns>
        public ManagedObjectName[] Query(ManagedObjectName query)
        {
            // TODO: several queries...

            if (query.LiteralProperties.Equals("*"))
            {
                return(FindAllFromDomain(query.Domain));
            }

            return(null);
        }
 /// <summary>
 /// Invokes an action in managed object
 /// </summary>
 /// <param name="name"></param>
 /// <param name="action"></param>
 /// <param name="args"></param>
 /// <param name="signature"></param>
 /// <returns></returns>
 /// <exception cref="InvalidDomainException">If domain name is not found.</exception>
 public Object Invoke(ManagedObjectName name, String action, Object[] args, Type[] signature)
 {
     if (name == null)
     {
         throw new ArgumentNullException("name");
     }
     if (action == null)
     {
         throw new ArgumentNullException("action");
     }
     return(registry.Invoke(name, action, args, signature));
 }
        /// <summary>
        /// Indexer for registered objects.
        /// </summary>
        public Object this[ManagedObjectName name]
        {
            get
            {
                if (name == null)
                {
                    throw new ArgumentNullException("name");
                }

                return GetEntry(name).Instance;
            }
        }
        public void TestCreation()
        {
            ManagedObjectName name1 = new ManagedObjectName("domain.net");

            AssertEquals("domain.net", name1.Domain);
            AssertEquals(String.Empty, name1.LiteralProperties);

            ManagedObjectName name2 = new ManagedObjectName("domain.org:name=SomeService,type=aware");

            AssertEquals("domain.org", name2.Domain);
            AssertEquals("type=aware,name=SomeService", name2.LiteralProperties);
        }
        /// <summary>
        /// Indexer for registered objects.
        /// </summary>
        public Object this[ManagedObjectName name]
        {
            get
            {
                if (name == null)
                {
                    throw new ArgumentNullException("name");
                }

                return(GetEntry(name).Instance);
            }
        }
        /// <summary>
        /// Helper to locate Entries.
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        private Entry GetEntry(ManagedObjectName name)
        {
            Domain domain = FindDomain(name.Domain);
            Entry  entry  = domain[name];

            if (entry == null)
            {
                throw new ManagedObjectNotFoundException(name.ToString());
            }

            return(entry);
        }
        /// <summary>
        /// Gets an attribute value of the specified managed object.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="attributeName"></param>
        /// <returns></returns>
        /// <exception cref="InvalidDomainException">If domain name is not found.</exception>
        public Object GetAttribute(ManagedObjectName name, String attributeName)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            if (attributeName == null)
            {
                throw new ArgumentNullException("attributeName");
            }

            return(registry.GetAttributeValue(name, attributeName));
        }
        /// <summary>
        /// Sets an attribute value of the specified managed object.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="attributeName"></param>
        /// <param name="attributeValue"></param>
        /// <exception cref="InvalidDomainException">If domain name is not found.</exception>
        public void SetAttribute(ManagedObjectName name, String attributeName, Object attributeValue)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            if (attributeName == null)
            {
                throw new ArgumentNullException("attributeName");
            }

            registry.SetAttributeValue(name, attributeName, attributeValue);
        }
Beispiel #24
0
		public ManagedObjectName[] ToArray()
		{
			lock(this)
			{
				int index = 0;
				ManagedObjectName[] names = new ManagedObjectName[ Count ];
				foreach(ManagedObjectName name in InnerHashtable.Keys)
				{
					names[index++] = name;
				}
				return names;
			}
		}
        public bool Contains(ManagedObjectName name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            String domainName = name.Domain;

            Domain domain = FindDomain(domainName);

            return(domain.Contains(name));
        }
        /// <summary>
        /// TODO: Summary
        /// </summary>
        /// <param name="instance"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public ManagedInstance RegisterManagedObject(Object instance, ManagedObjectName name)
        {
            if (instance == null)
            {
                throw new ArgumentNullException("instance");
            }
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            return(registry.RegisterManagedObject(instance, name));
        }
        public void TestEquality1()
        {
            ManagedObjectName name1 = new ManagedObjectName("domain.net");
            ManagedObjectName name2 = new ManagedObjectName("domain.net");

            Assert(name1.GetHashCode() == name2.GetHashCode());
            Assert(name1.Equals(name2));

            ManagedObjectName name3 = new ManagedObjectName("domain.org");

            Assert(name1.GetHashCode() != name3.GetHashCode());
            Assert(!name1.Equals(name3));
        }
Beispiel #28
0
 public ManagedObjectName[] ToArray()
 {
     lock (this)
     {
         int index = 0;
         ManagedObjectName[] names = new ManagedObjectName[Count];
         foreach (ManagedObjectName name in InnerHashtable.Keys)
         {
             names[index++] = name;
         }
         return(names);
     }
 }
        public void TestEquality2()
        {
            ManagedObjectName name1 = new ManagedObjectName("domain.net:name=SomeService,type=aware");
            ManagedObjectName name2 = new ManagedObjectName("domain.net:name=SomeService,type=aware");

            Assert(name1.GetHashCode() == name2.GetHashCode());
            Assert(name1.Equals(name2));

            ManagedObjectName name3 = new ManagedObjectName("domain.net:name=SomeService,type=unaware");

            Assert(name1.GetHashCode() != name3.GetHashCode());
            Assert(!name1.Equals(name3));
        }
        /// <summary>
        /// Creates a ManagedInstance instance.
        /// </summary>
        /// <param name="typeName">Full qualified name of the type</param>
        /// <param name="name"><see cref="ManagedObjectName"/> of instance.</param>
        public ManagedInstance(String typeName, ManagedObjectName name)
        {
            if (typeName == null)
            {
                throw new ArgumentNullException("typeName");
            }
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            this.name     = name;
            this.typeName = typeName;
        }
        /// <summary>
        /// TODO: Summary
        /// </summary>
        /// <param name="typeName"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public ManagedInstance CreateManagedObject(String typeName, ManagedObjectName name)
        {
            if (typeName == null)
            {
                throw new ArgumentNullException("typeName");
            }
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            Object instance = Instantiate(typeName);
            return RegisterManagedObject(instance, name);
        }
        /// <summary>
        /// TODO: Summary
        /// </summary>
        /// <param name="typeName"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public ManagedInstance CreateManagedObject(String typeName, ManagedObjectName name)
        {
            if (typeName == null)
            {
                throw new ArgumentNullException("typeName");
            }
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            Object instance = Instantiate(typeName);

            return(RegisterManagedObject(instance, name));
        }
        public void TestRegistration()
        {
            MDefaultRegistry registry = new MDefaultRegistry(new MDefaultServer());

            DummyLifecycledService service = new DummyLifecycledService();

            ManagedObjectName name = new ManagedObjectName("domain.org:name=Service");

            registry.RegisterManagedObject( service, name );
            registry.UnregisterManagedObject( name );

            AssertEquals( 0, service.beforeRegisterCalled );
            AssertEquals( 1, service.afterRegisterCalled );
            AssertEquals( 2, service.beforeDeregisterCalled );
            AssertEquals( 3, service.afterDeregisterCalled );
        }
        public void TestRegistration()
        {
            MDefaultRegistry registry = new MDefaultRegistry(new MDefaultServer());

            DummyLifecycledService service = new DummyLifecycledService();

            ManagedObjectName name = new ManagedObjectName("domain.org:name=Service");

            registry.RegisterManagedObject(service, name);
            registry.UnregisterManagedObject(name);

            AssertEquals(0, service.beforeRegisterCalled);
            AssertEquals(1, service.afterRegisterCalled);
            AssertEquals(2, service.beforeDeregisterCalled);
            AssertEquals(3, service.afterDeregisterCalled);
        }
Beispiel #35
0
        public void TestCreateManagedObject()
        {
            ManagedObjectName name = new ManagedObjectName("domain.org:type=httpServer");

            try
            {
                ManagedInstance inst = server.CreateManagedObject(
                    httpServerType.Assembly.FullName, httpServerType.FullName, name);
                AssertNotNull(inst);
                AssertEquals(httpServerType.FullName, inst.TypeName);
                AssertEquals(name, inst.Name);
            }
            finally
            {
                server.UnregisterManagedObject(name);
            }
        }
        public void TestSerialization()
        {
            MemoryStream stream = new MemoryStream();

            ManagedObjectName name1 = new ManagedObjectName("domain.net:name=SomeService,type=aware");

            BinaryFormatter formatter = new BinaryFormatter();

            formatter.Serialize(stream, name1);

            stream.Position = 0;

            ManagedObjectName name2 = (ManagedObjectName)formatter.Deserialize(stream);

            Assert(name1.GetHashCode() == name2.GetHashCode());
            Assert(name1.Equals(name2));
        }
        public void TestCreateManagedObject()
        {
            ManagedObjectName name = new ManagedObjectName("domain.org:type=httpServer");

            try
            {
                ManagedInstance inst = server.CreateManagedObject(
                    httpServerType.Assembly.FullName, httpServerType.FullName, name );
                AssertNotNull( inst );
                AssertEquals( httpServerType.FullName, inst.TypeName );
                AssertEquals( name, inst.Name );
            }
            finally
            {
                server.UnregisterManagedObject( name );
            }
        }
        public void TestGetManagementInfo()
        {
            ManagedObjectName name1 = new ManagedObjectName("domain.org:type=httpServer");
            ManagedObjectName name2 = new ManagedObjectName("domain.net:type=smtpServer");

            try
            {
                Object httpServer = server.Instantiate( httpServerType.Assembly.FullName, httpServerType.FullName );
                server.RegisterManagedObject( httpServer, name1 );

                ManagementInfo info = server.GetManagementInfo( name1 );
                AssertNotNull( info );
                AssertEquals( 3, info.Operations.Count );
                AssertEquals( 1, info.Attributes.Count );

                Object smtpServer = server.Instantiate( smtpServerType.Assembly.FullName, smtpServerType.FullName );

                try
                {
                    server.RegisterManagedObject( smtpServer, name1 );

                    Fail("Should not allow register with same name.");
                }
                catch(InstanceAlreadyRegistredException)
                {
                    // OK
                }

                server.RegisterManagedObject( smtpServer, name2 );

                info = server.GetManagementInfo( name2 );
                AssertNotNull( info );
                AssertEquals( 2, info.Operations.Count );
                AssertEquals( 1, info.Attributes.Count );
            }
            finally
            {
                server.UnregisterManagedObject( name1 );
                server.UnregisterManagedObject( name2 );
            }
        }
Beispiel #39
0
        public void TestGetManagementInfo()
        {
            ManagedObjectName name1 = new ManagedObjectName("domain.org:type=httpServer");
            ManagedObjectName name2 = new ManagedObjectName("domain.net:type=smtpServer");

            try
            {
                Object httpServer = server.Instantiate(httpServerType.Assembly.FullName, httpServerType.FullName);
                server.RegisterManagedObject(httpServer, name1);

                ManagementInfo info = server.GetManagementInfo(name1);
                AssertNotNull(info);
                AssertEquals(3, info.Operations.Count);
                AssertEquals(1, info.Attributes.Count);

                Object smtpServer = server.Instantiate(smtpServerType.Assembly.FullName, smtpServerType.FullName);

                try
                {
                    server.RegisterManagedObject(smtpServer, name1);

                    Fail("Should not allow register with same name.");
                }
                catch (InstanceAlreadyRegistredException)
                {
                    // OK
                }

                server.RegisterManagedObject(smtpServer, name2);

                info = server.GetManagementInfo(name2);
                AssertNotNull(info);
                AssertEquals(2, info.Operations.Count);
                AssertEquals(1, info.Attributes.Count);
            }
            finally
            {
                server.UnregisterManagedObject(name1);
                server.UnregisterManagedObject(name2);
            }
        }
Beispiel #40
0
        public void TestTcpServerCreation()
        {
            System.Collections.Specialized.NameValueCollection props =
                new System.Collections.Specialized.NameValueCollection();
            props.Add("port", "3131");

            MConnectorServer serverConn =
                MConnectorServerFactory.CreateServer("provider:tcp:binary:test.rem", props, null);

            AssertNotNull(serverConn);

            ManagedObjectName name = new ManagedObjectName("connector.tcp:formatter=binary");

            server.RegisterManagedObject(serverConn, name);

            AssertEquals(name, serverConn.ManagedObjectName);

            AppDomain child = null;

            try
            {
                child = AppDomain.CreateDomain(
                    "Child",
                    new System.Security.Policy.Evidence(AppDomain.CurrentDomain.Evidence),
                    AppDomain.CurrentDomain.SetupInformation);

                RemoteClient client = (RemoteClient)
                                      child.CreateInstanceAndUnwrap(typeof(RemoteClient).Assembly.FullName, typeof(RemoteClient).FullName);

                AssertNotNull(client.TestTcpClientCreation());
            }
            finally
            {
                server.UnregisterManagedObject(name);

                if (child != null)
                {
                    AppDomain.Unload(child);
                }
            }
        }
        public void TestUse()
        {
            MDefaultRegistry registry = new MDefaultRegistry(new MDefaultServer());
            AssertEquals( 0, registry.Count );

            DummyHttpServer instance = new DummyHttpServer();
            ManagedObjectName name = new ManagedObjectName("domain.org");

            ManagedInstance minstance =
                registry.RegisterManagedObject(instance, name);

            AssertNotNull( minstance );
            AssertNotNull( minstance.TypeName );
            AssertEquals( name, minstance.Name );
            AssertEquals( 1, registry.Count );
            AssertEquals( instance, registry[name] );

            registry.UnregisterManagedObject( name );

            AssertEquals( 0, registry.Count );
        }
        public void TestAttributes()
        {
            ManagedObjectName name = new ManagedObjectName("domain.net:type=smtpServer");

            try
            {
                Object smtpServer = server.Instantiate( smtpServerType.Assembly.FullName, smtpServerType.FullName );

                ManagedInstance inst = server.RegisterManagedObject( smtpServer, name );

                int port = (int) server.GetAttribute(name, "Port");
                AssertEquals( 1088, port );

                server.SetAttribute( name, "Port", 25 );

                port = (int) server.GetAttribute(name, "Port");
                AssertEquals( 25, port );
            }
            finally
            {
                server.UnregisterManagedObject( name );
            }
        }
        public void TestInfoObtation()
        {
            MDefaultServer server = new MDefaultServer();

            ManagedObjectName name1 = new ManagedObjectName("domain.org:type=dummyService");

            try
            {
                Type serviceType = typeof(DummyService);

                Object service = server.Instantiate( serviceType.Assembly.FullName, serviceType.FullName );
                server.RegisterManagedObject( service, name1 );

                ManagementInfo info = server.GetManagementInfo( name1 );
                AssertNotNull( info );
                AssertEquals( 1, info.Operations.Count );
                AssertEquals( 1, info.Attributes.Count );
            }
            finally
            {
                server.UnregisterManagedObject( name1 );
            }
        }
        /// <summary>
        /// TODO: Summary
        /// </summary>
        /// <param name="instance"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public ManagedInstance RegisterManagedObject(Object instance, ManagedObjectName name)
        {
            if (instance == null)
            {
                throw new ArgumentNullException("instance");
            }
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            return registry.RegisterManagedObject(instance, name);
        }
        /// <summary>
        /// TODO: Summary
        /// </summary>
        /// <param name="name"></param>
        public void UnregisterManagedObject(ManagedObjectName name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            registry.UnregisterManagedObject(name);
        }
 /// <summary>
 /// Invokes an action in managed object
 /// </summary>
 /// <param name="name"></param>
 /// <param name="action"></param>
 /// <param name="args"></param>
 /// <param name="signature"></param>
 /// <returns></returns>
 /// <exception cref="InvalidDomainException">If domain name is not found.</exception>
 public Object Invoke(ManagedObjectName name, String action, Object[] args, Type[] signature)
 {
     if (name == null)
     {
         throw new ArgumentNullException("name");
     }
     if (action == null)
     {
         throw new ArgumentNullException("action");
     }
     return registry.Invoke(name, action, args, signature);
 }
 /// <summary>
 /// Queries the registerd components.
 /// </summary>
 /// <returns></returns>
 public ManagedObjectName[] Query(ManagedObjectName query)
 {
     return registry.Query(query);
 }
 public void UnregisterManagedObject(ManagedObjectName name)
 {
     server.UnregisterManagedObject(name);
 }
        /// <summary>
        /// Returns the info (attributes and operations) about the specified object.
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        /// <exception cref="InvalidDomainException">If domain name is not found.</exception>
        public ManagementInfo GetManagementInfo(ManagedObjectName name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            return registry.GetManagementInfo(name);
        }
 public Object GetAttribute(ManagedObjectName name, String attributeName)
 {
     return server.GetAttribute(name, attributeName);
 }
 public ManagedInstance CreateManagedObject(String assemblyName, String typeName, ManagedObjectName name)
 {
     return server.CreateManagedObject(assemblyName, typeName, name);
 }
 public ManagementInfo GetManagementInfo(ManagedObjectName name)
 {
     return server.GetManagementInfo(name);
 }
 public ManagedInstance GetManagedInstance(ManagedObjectName name)
 {
     return server.GetManagedInstance(name);
 }
 public Object Invoke(ManagedObjectName name, String action, Object[] args, Type[] signature)
 {
     return server.Invoke(name, action, args, signature);
 }
 public void SetAttribute(ManagedObjectName name, String attributeName, Object attributeValue)
 {
     server.SetAttribute(name, attributeName, attributeValue);
 }
        public bool Contains(ManagedObjectName name)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            String domainName = name.Domain;

            Domain domain = FindDomain(domainName);

            return domain.Contains(name);
        }
 public ManagedInstance RegisterManagedObject(Object instance, ManagedObjectName name)
 {
     return server.RegisterManagedObject(instance, name);
 }
        public void TestInvoke()
        {
            ManagedObjectName name = new ManagedObjectName("domain.org:type=httpServer");

            try
            {
                Object httpServer = server.Instantiate( httpServerType.Assembly.FullName, httpServerType.FullName );

                ManagedInstance inst = server.RegisterManagedObject( httpServer, name );

                bool state = (bool) server.GetAttribute(name, "Started");
                AssertEquals( false, state );

                server.Invoke( name, "Start", null, null );

                state = (bool) server.GetAttribute(name, "Started");
                AssertEquals( true, state );

                server.Invoke( name, "Stop", null, null );
                state = (bool) server.GetAttribute(name, "Started");
                AssertEquals( false, state );
            }
            finally
            {
                server.UnregisterManagedObject( name );
            }
        }
        /// <summary>
        /// Gets an attribute value of the specified managed object.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="attributeName"></param>
        /// <returns></returns>
        /// <exception cref="InvalidDomainException">If domain name is not found.</exception>
        public Object GetAttribute(ManagedObjectName name, String attributeName)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            if (attributeName == null)
            {
                throw new ArgumentNullException("attributeName");
            }

            return registry.GetAttributeValue(name, attributeName);
        }
 public ManagedObjectName[] Query(ManagedObjectName query)
 {
     return server.Query(query);
 }