Esempio n. 1
0
 public ClientResponse(ICommMessage message, IClientNode client)
 {
     Message = message;
     Clients = new List <IClientNode>()
     {
         client
     };
 }
        public MainWindow()
        {
            InitializeComponent();
            
            txtUserName.Text = "User" + new Random().Next(10000);
            cbChatRooms.ItemsSource = _rooms;

            var builder = new ContainerBuilder();

            //register core messages
            builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(EmptyMessage)))
                .Where(x => x.IsAssignableTo<Message>() && x != typeof(Message))
                .As<Message>();

            //register domain messages
            builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(IChatLogin)))
                .Where(x => x.IsAssignableTo<Message>() && x != typeof(Message))
                .As<Message>();

            //register domain service definitions and proxies
            builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(IChatLogin)))
                .Where(x => x.IsAssignableTo<NetProxy>() && x != typeof(NetProxy))
                .As<NetProxy>();

            builder.RegisterType<OperationDispatcher>().As<IOperationDispatcher>().SingleInstance();
            builder.RegisterType<MessageFactory>().As<IMessageFactory>().SingleInstance();
            //builder.Register(c => new PhotonNetClient("MouseChat")).As<INetProvider>().SingleInstance();
            var netConf = new NetPeerConfiguration("ChatApp")
            {
                ConnectionTimeout = 10000,
            };

            builder.Register(x => new LidgrenNetProvider(netConf)).As<INetProvider>().SingleInstance();
            builder.RegisterType<ClientNode>().As<IClientNode>();
            var container = builder.Build();
            
            _node = container.Resolve<IClientNode>();
            //start node thread and init network
            _node.Start();

            btnJoin.IsEnabled = false;
            Closing += (sender, e) => _node.Stop();

        }
        public MainWindow()
        {
            InitializeComponent();

            txtUserName.Text        = "User" + new Random().Next(10000);
            cbChatRooms.ItemsSource = _rooms;

            var builder = new ContainerBuilder();

            //register core messages
            builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(EmptyMessage)))
            .Where(x => x.IsAssignableTo <Message>() && x != typeof(Message))
            .As <Message>();

            //register domain messages
            builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(IChatLogin)))
            .Where(x => x.IsAssignableTo <Message>() && x != typeof(Message))
            .As <Message>();

            //register domain service definitions and proxies
            builder.RegisterAssemblyTypes(Assembly.GetAssembly(typeof(IChatLogin)))
            .Where(x => x.IsAssignableTo <NetProxy>() && x != typeof(NetProxy))
            .As <NetProxy>();

            builder.RegisterType <OperationDispatcher>().As <IOperationDispatcher>().SingleInstance();
            builder.RegisterType <MessageFactory>().As <IMessageFactory>().SingleInstance();
            //builder.Register(c => new PhotonNetClient("MouseChat")).As<INetProvider>().SingleInstance();
            var netConf = new NetPeerConfiguration("ChatApp")
            {
                ConnectionTimeout = 10000,
            };

            builder.Register(x => new LidgrenNetProvider(netConf)).As <INetProvider>().SingleInstance();
            builder.RegisterType <ClientNode>().As <IClientNode>();
            var container = builder.Build();

            _node = container.Resolve <IClientNode>();
            //start node thread and init network
            _node.Start();

            btnJoin.IsEnabled = false;
            Closing          += (sender, e) => _node.Stop();
        }
Esempio n. 4
0
File: Main.cs Progetto: radtek/BackO
        private static void WakeUp()
        {
            idle = false;
            string         libsPath    = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).Replace("bin", "lib");
            AppDomainSetup domainSetup = new AppDomainSetup {
                PrivateBinPath = libsPath, ApplicationBase = libsPath
            };
            var nodeDomain = AppDomain.CreateDomain("Node", null, domainSetup);

            /*IClientNode*/ c = (IClientNode)nodeDomain.CreateInstanceAndUnwrap("Node", "Node.Client");
            //c.OnGoingIdle += (object sender, EventArgs e) => AppDomain.Unload(nodeDomain);
            IPEndPoint[] hubEP = c.Login(startArgs);

            // If we get there, the node has decided to go idle.
            ListenHubWakeups(hubEP[1]);
            hubPort = hubEP[0].Port;
            idle    = true;
            Console.WriteLine("unloading node..." + ((nodeDomain == null)? " node already null": ""));
            if (nodeDomain != null)
            {
                AppDomain.Unload(nodeDomain);
            }
        }
Esempio n. 5
0
        public static RawClientRequest BuildRawRequest <T>(T message, TodoMessageTypes payloadType, IClientNode client)
        {
            var messageStream = new MemoryStream();

            Serializer.Serialize <T>(messageStream, message);

            var container = new MessageContainerProto()
            {
                Data        = messageStream.ToArray(),
                PayloadType = (uint)payloadType
            };

            var containerStream = new MemoryStream();

            Serializer.Serialize <MessageContainerProto>(containerStream, container);

            return(new RawClientRequest(containerStream.ToArray(), client));
        }
Esempio n. 6
0
 public RawClientRequest(byte[] rawRequest, IClientNode client)
 {
     RawRequest = rawRequest;
     Client     = client;
 }
Esempio n. 7
0
 public ClientRequest(TMessage message, IClientNode client)
 {
     Message = message;
     Client  = client;
 }
Esempio n. 8
0
 public ClientStatusChanged(IClientNode client, ClientStatusChangeType type)
 {
     Client = client;
     Type   = type;
 }