コード例 #1
0
        public ClientEnd(EventLoop loop, string host, int port)
        {
            _loop    = loop;
            _channel = new Channel();
            _handle  = new Tcp(_loop);
            _ip      = new IPEndPoint(IPAddress.Parse(host), port);

            _handle.Channel = _channel;
            _channel.Handle = _handle;
            _connected      = false;
        }
コード例 #2
0
ファイル: TcpHandle.cs プロジェクト: richygithub/GameServer
        public TcpHandle(EventLoop loop) : base()
        {
            _handle    = Libuv.Allocate(uv_handle_type.UV_TCP);
            _eventLoop = loop;

            Libuv.uv_tcp_init(loop.Loop, _handle);

            GCHandle gcHandle = GCHandle.Alloc(this, GCHandleType.Normal);

            ((uv_handle_t *)_handle)->data = GCHandle.ToIntPtr(gcHandle);
        }
コード例 #3
0
        public ClientProxy(EventLoop loop, List <ServerCfg> servers)
        {
            _eventLoop = loop;
            _clientRpc = new ClientEnd[servers.Count];

            for (int idx = 0; idx < servers.Count; idx++)
            {
                var cfg = servers[idx];
                _clientRpc[idx] = new ClientEnd(_eventLoop, cfg.host, cfg.port);
            }
        }
コード例 #4
0
ファイル: ServerEnd.cs プロジェクト: richygithub/GameServer
        public ServerEnd(EventLoop loop, IDispatcher dispatcher, int port)
        {
            _netLoop = loop;
            //IPEndPoint ep = new IPEndPoint(IPAddress.Any, _port);
            _tcpHandle = new TcpListen(_netLoop);

            _tcpHandle.ChannelAddEvent += AddChannel;

            _ip = new IPEndPoint(IPAddress.Any, port);
            _tcpHandle.Bind(_ip);
            _dispatcher = dispatcher;

            //_dispatcher = new Dispatcher(_loop);
        }
コード例 #5
0
ファイル: Timer.cs プロジェクト: richygithub/GameServer
        public Timer(EventLoop loop, Action <object> cb, object state)
        {
            _eventLoop = loop;
            _callback  = cb;
            _state     = state;

            _handle = Libuv.Allocate(uv_handle_type.UV_TIMER);

            Libuv.uv_timer_init(_eventLoop.Loop, _handle);


            GCHandle gcHandle = GCHandle.Alloc(this, GCHandleType.Normal);

            ((uv_handle_t *)_handle)->data = GCHandle.ToIntPtr(gcHandle);
        }
コード例 #6
0
        public Async(EventLoop loop, Action <object> cb, object state)
        {
            var handle = Libuv.Allocate(uv_handle_type.UV_ASYNC);

            _handle = handle;

            _eventLoop = loop;

            _callback = cb;
            _state    = state;


            Libuv.uv_async_init(loop.Loop, _handle, WorkCallback);

            GCHandle gcHandle = GCHandle.Alloc(this, GCHandleType.Normal);

            ((uv_handle_t *)_handle)->data = GCHandle.ToIntPtr(gcHandle);
        }
コード例 #7
0
        public RemoteServers(EventLoop eventLoop)
        {
            _maps.Add("area", AREA);
            _maps.Add("connector", CONNECTOR);
            _maps.Add("chat", CHAT);
            _maps.Add("gate", GATE);

            foreach (var kv in _maps)
            {
                var cfg = CfgMgr.Instance.GetServerCfg(kv.Key);
                _servers[kv.Value] = new ClientProxy(eventLoop, cfg);
            }


            /*
             * for(int idx = 0; idx < SERVER_NUM; idx++)
             * {
             *  _servers[idx] = new ClientProxy( )
             * }
             */
        }
コード例 #8
0
ファイル: Dispatcher.cs プロジェクト: richygithub/GameServer
        void HandlePacket(EventLoop netloop, Channel c, Packet p)
        {
            if (_workLoop != netloop)
            {
                _workLoop.AddAsyncJob(() =>
                {
                    //byte[] buff = loop.PWriter.Write("abcde");

                    //c.Send("abcde",loop.PWriter);

                    int xx;
                    string bbb;
                    switch (p.serviceId)
                    {
                    case 1:
                        break;

                    default:
                        break;
                    }

                    netloop.AddAsyncJob(() =>
                    {
                        c.Send();
                    });

                    //c.Send()
                });
            }
            else
            {
                Packet ret = new Packet();
                //byte[] buff = loop.PWriter.Write("abcde");
                //c.Send(buff);
                //c.Send("abcde",loop.PWriter);
            }
        }
コード例 #9
0
ファイル: Tcp.cs プロジェクト: richygithub/GameServer
 public Tcp(EventLoop loop) : base(loop)
 {
 }
コード例 #10
0
ファイル: Dispatcher.cs プロジェクト: richygithub/GameServer
 public Dispatcher(EventLoop loop)
 {
     _workLoop     = loop;
     _remoteServer = new RemoteServers(loop);
 }
コード例 #11
0
ファイル: Dispatcher.cs プロジェクト: richygithub/GameServer
 public RpcClient(EventLoop loop)
 {
     _eventLoop     = loop;
     _remoteServers = new RemoteServers(_eventLoop);
 }
コード例 #12
0
ファイル: Dispatcher.cs プロジェクト: richygithub/GameServer
 void ForwardPacket(EventLoop netloop, Packet p)
 {
     //直接send
 }
コード例 #13
0
ファイル: TcpListen.cs プロジェクト: richygithub/GameServer
 public TcpListen(EventLoop loop) : base(loop)
 {
 }