Esempio n. 1
0
        public void TestFixtureSetUp()
        {
            var seed = (int)DateTime.Now.Ticks;

            _random = new Random(seed);

            var endPoint = new Mock <IRemotingEndPoint>();

            _endPoint = endPoint.Object;

            var channel = new Mock <IEndPointChannel>();

            _channel = channel.Object;

            _proxyCreator   = new RemotingProxyCreator();
            _servantCreator = new ServantCreator();

            channel.Setup(
                x => x.CallRemoteMethod(It.IsAny <ulong>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <MemoryStream>()))
            .Returns((ulong objectId, string interfaceName, string methodName, Stream arguments) =>
            {
                if (objectId != _servant.ObjectId)
                {
                    throw new NoSuchServantException(objectId);
                }

                BinaryReader reader = arguments != null ? new BinaryReader(arguments) : null;
                var ret             = new MemoryStream();
                var writer          = new BinaryWriter(ret);

                _servant.Invoke(methodName, reader, writer);
                ret.Position = 0;
                return(ret);
            });
        }
Esempio n. 2
0
        /// <summary>
        ///     Initializes this object.
        /// </summary>
        /// <remarks>
        ///     Creating a new instance of this type means loading a new dynamic assembly into the
        ///     <see cref="AppDomain.CurrentDomain" />. THIS ASSEMBLY CANNOT BE UNLOADED UNLESS THE APPDOMAIN IS.
        ///     Do not create new instances of this type if you can easily re-use an existing instance or
        ///     you will consume more and more memory.
        /// </remarks>
        /// <param name="customTypeResolver">Type resolver that should be used instead of <see cref="TypeResolver" /></param>
        public CodeGenerator(ITypeResolver customTypeResolver = null)
        {
            var assemblyName = new AssemblyName("SharpRemote.GeneratedCode");
            var assembly     = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave);
            var moduleName   = assemblyName.Name + ".dll";
            var module       = assembly.DefineDynamicModule(moduleName);

            var serializer = new BinarySerializer(module, customTypeResolver);

            _proxyCreator   = new RemotingProxyCreator(module, serializer);
            _servantCreator = new ServantCreator(module, serializer);
        }
Esempio n. 3
0
        public void SetUp()
        {
            var assemblyName = new AssemblyName("SharpRemote.GeneratedCode.Servants");

            _assembly   = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave);
            _moduleName = assemblyName.Name + ".dll";
            ModuleBuilder module = _assembly.DefineDynamicModule(_moduleName);

            var seed = (int)(DateTime.Now.Ticks % Int32.MaxValue);

            Console.WriteLine("Seed: {0}", seed);
            _random     = new Random(seed);
            _endPoint   = new Mock <IRemotingEndPoint>();
            _channel    = new Mock <IEndPointChannel>();
            _creator    = new ServantCreator(module);
            _serializer = _creator.BinarySerializer;
        }
Esempio n. 4
0
        /// <summary>
        ///     Initializes this object.
        /// </summary>
        /// <remarks>
        ///     Creating a new instance of this type means loading a new dynamic assembly into the
        ///     <see cref="AppDomain.CurrentDomain" />. THIS ASSEMBLY CANNOT BE UNLOADED UNLESS THE APPDOMAIN IS.
        ///     Do not create new instances of this type if you can easily re-use an existing instance or
        ///     you will consume more and more memory.
        /// </remarks>
        /// <param name="customTypeResolver">Type resolver that should be used instead of <see cref="TypeResolver" /></param>
        public CodeGenerator(ITypeResolver customTypeResolver = null)
        {
            var assemblyName = new AssemblyName("SharpRemote.GeneratedCode");

#if DOTNETCORE
            var access = AssemblyBuilderAccess.Run;
#else
            var access = AssemblyBuilderAccess.RunAndSave;
#endif

            var assembly   = AssemblyBuilder.DefineDynamicAssembly(assemblyName, access);
            var moduleName = assemblyName.Name + ".dll";
            var module     = assembly.DefineDynamicModule(moduleName);

            var serializer = new BinarySerializer(module, customTypeResolver);
            _proxyCreator   = new RemotingProxyCreator(module, serializer);
            _servantCreator = new ServantCreator(module, serializer);
        }
Esempio n. 5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="binarySerializer"></param>
 public CodeGenerator(BinarySerializer binarySerializer)
 {
     _proxyCreator   = new RemotingProxyCreator(binarySerializer.Module, binarySerializer);
     _servantCreator = new ServantCreator(binarySerializer.Module, binarySerializer);
 }