コード例 #1
0
ファイル: Handler.cs プロジェクト: shlee322/Netronics
 public void Disconnected(IReceiveContext context)
 {
     channelLock.EnterWriteLock();
     _channels.Remove(context.GetChannel());
     channelLock.ExitWriteLock();
     SendMessage(context.GetChannel() + " 88" + "\r\n> ");
 }
コード例 #2
0
ファイル: Handler.cs プロジェクト: shlee322/Netronics
 public void Connected(IReceiveContext context)
 {
     context.GetChannel().SetTag(false);
     channelLock.EnterWriteLock();
     _channels.AddLast(context.GetChannel());
     channelLock.ExitWriteLock();
     SendMessage("hi! " + context.GetChannel());
     context.GetChannel().SendMessage("your name\r\n>");
 }
コード例 #3
0
ファイル: Client.cs プロジェクト: shlee322/Netronics
 // 클라이언트로부터 메시지가 왔을때 호출
 public void MessageReceive(IReceiveContext context)
 {
     context.GetChannel().SendMessage("test" + i++);
     Console.WriteLine("Client Thread " + System.Threading.Thread.CurrentThread.ManagedThreadId + " - " + context.GetMessage());
     if ((string) context.GetMessage() == "test20")
         SocketChannel.ExitEvent.Set();
 }
コード例 #4
0
ファイル: Client.cs プロジェクト: shlee322/Netronics
 // 클라이언트가 접속시 호출
 public void Connected(IReceiveContext channel)
 {
     JObject o = new JObject();
     o.Add("name", "test");
     o.Add("value", i++);
     channel.GetChannel().SendMessage(o);
 }
コード例 #5
0
ファイル: Service.cs プロジェクト: shlee322/Netronics
 public void Connected(IReceiveContext context)
 {
     dynamic packet = new JObject();
     packet.type = "connect_service_info";
     packet.service = _processor.GetServiceLoader().GetServiceName();
     packet.id = _processor.GetServiceId();
     context.GetChannel().SendMessage(packet);
 }
コード例 #6
0
ファイル: Server.cs プロジェクト: shlee322/Netronics
 // 클라이언트로부터 메시지가 왔을때 호출
 public void MessageReceive(IReceiveContext context)
 {
     if(((string) context.GetMessage()).Substring(0,4) != "test")
         throw new Exception("Error!");
     Console.WriteLine("Server Thread " + System.Threading.Thread.CurrentThread.ManagedThreadId + " - " + context.GetMessage());
     context.GetChannel().SendMessage(context.GetMessage());
     //context.GetChannel().SendMessage(context.GetMessage()); // 에코 서버인 만큼 온 데이터를 그대로 전송
 }
コード例 #7
0
 public void MessageReceive(IReceiveContext context)
 {
     var packet = (JObject)context.GetMessage();
     System.Console.WriteLine(packet);
     string type = packet["type"].Value<string>();
     switch (type)
     {
         case "get_ant_name_list":
             context.GetChannel().SendMessage("ant_name_list", new JArray(QueenAnt.GetQueenAnt().GetAntNameArray()));
             break;
         case "request_join_ant":
             AntManager.GetAntManager().RequestJoinAnt(context.GetChannel(), packet["args"].Value<JObject>());
             break;
         case "start_ant":
             AntManager.GetAntManager().StartAnt(context.GetChannel().GetTag() as Ant);
             break;
     }
 }
コード例 #8
0
ファイル: Client.cs プロジェクト: shlee322/Netronics
        public void Connected(IReceiveContext context)
        {
            if (context.GetChannel().ToString().Substring(0, context.GetChannel().ToString().IndexOf(":", StringComparison.Ordinal))
                != _channel.ToString().Substring(0, _channel.ToString().IndexOf(":", StringComparison.Ordinal)))
            {
                context.GetChannel().Disconnect();
                return;
            }

            _channel = context.GetChannel();

            _channel.SetConfig("handler", this);

            _socketIO.Emit("connection", this);

            Send("1", "", _endPoint + "?server=netronics");
            if(_heartbeatTimer == null)
                _heartbeatTimer = new Timer(state => Send("2", ""), null, 0, 10000);
        }
コード例 #9
0
ファイル: Server.cs プロジェクト: shlee322/Netronics
        // 클라이언트로부터 메시지가 왔을때 호출
        public void MessageReceive(IReceiveContext context)
        {
            var o = context.GetMessage() as JObject;

            if(o.Value<string>("name") != "test")
                throw new Exception("Error!");
            Console.WriteLine("Server Thread {0} - {1}", System.Threading.Thread.CurrentThread.ManagedThreadId, context.GetMessage());
            context.GetChannel().SendMessage(context.GetMessage());
            //context.GetChannel().SendMessage(context.GetMessage()); // 에코 서버인 만큼 온 데이터를 그대로 전송
        }
コード例 #10
0
ファイル: Client.cs プロジェクト: shlee322/Netronics
        public void Disconnected(IReceiveContext context)
        {
            if(context.GetChannel() != _channel)
                return;

            if (_heartbeatTimer != null)
                _heartbeatTimer.Dispose();
            _heartbeatTimer = null;

            Send("0", "");

            _socketIO.Emit("disconnect", this);
        }
コード例 #11
0
ファイル: Handler.cs プロジェクト: shlee322/Netronics
 public void MessageReceive(IReceiveContext context)
 {
     if (context.GetChannel().GetTag() is bool)
     {
         context.GetChannel().SetTag(context.GetMessage());
         SendMessage(context.GetChannel() + " name is " + context.GetChannel().GetTag() + "\r\n> ");
         return;
     }
     SendMessage(context.GetChannel().GetTag() + " : " + context.GetChannel() + "> ");
 }
コード例 #12
0
ファイル: Client.cs プロジェクト: shlee322/Netronics
        // 클라이언트로부터 메시지가 왔을때 호출
        public void MessageReceive(IReceiveContext context)
        {
            var o = context.GetMessage() as JObject;

            if (o.Value<string>("name") != "test")
                throw new Exception("Error!");

            JObject o2 = new JObject();
            o2.Add("name", "test");
            o2.Add("value", i++);
            context.GetChannel().SendMessage(o2);

            Console.WriteLine("Client Thread " + System.Threading.Thread.CurrentThread.ManagedThreadId + " - " + context.GetMessage());
            if (((JObject) context.GetMessage()).Value<int>("value") == 20)
                SocketChannel.ExitEvent.Set();
        }
コード例 #13
0
ファイル: Handler.cs プロジェクト: shlee322/Netronics
 public void Connected(IReceiveContext context)
 {
     _channelLock.EnterWriteLock();
     _channels.AddLast(context.GetChannel());
     _channelLock.ExitWriteLock();
 }
コード例 #14
0
 public int ReceiveSwitching(IReceiveContext context)
 {
     return context.GetChannel().GetHashCode();
 }
コード例 #15
0
ファイル: Client.cs プロジェクト: shlee322/Netronics
        public void MessageReceive(IReceiveContext context)
        {
            if(context.GetMessage() is ConnectionClose)
            {
                context.GetChannel().Disconnect();
                return;
            }
            else if (context.GetMessage() is byte[])
            {
                string msg = System.Text.Encoding.UTF8.GetString(context.GetMessage() as byte[]);

                if (msg.StartsWith("0"))
                {
                    context.GetChannel().Disconnect();
                }
                else if (msg.StartsWith("3:::")) //Message
                {
                    if (msg.Length < 5)
                        return;
                    if (_event.ContainsKey("message"))
                        _event["message"](msg.Substring(4));
                }
                else if (msg.StartsWith("4:::")) //JSON Message
                {
                    if (msg.Length < 5)
                        return;
                    if (_event.ContainsKey("message"))
                        _event["message"](JsonConvert.DeserializeObject(msg.Substring(4)));

                }
                else if (msg.StartsWith("5:::")) //Event
                {
                    if (msg.Length < 5)
                        return;
                    dynamic data = JsonConvert.DeserializeObject(msg.Substring(4));
                    if(_event.ContainsKey(data.name.ToString()))
                        _event[data.name.ToString()](data.args);
                }
            }
        }
コード例 #16
0
ファイル: AntPipeline.cs プロジェクト: shlee322/Netronics
 public void MessageReceive(IReceiveContext context)
 {
     var packet = (JObject)context.GetMessage();
     string type = packet["type"].Value<string>();
     switch (type)
     {
         case "hello_ant":
             var args = packet["args"].Value<JObject>();
             Kernel.GetKernel().HelloAnt(context.GetChannel(), args.Value<int>("ant"), args.Value<int>("id"));
             break;
         case "request":
             var ant = context.GetChannel().GetTag() as RemoteAnt;
             ant.ReceiveTask(packet["t_id"].Value<int>(), packet["m_type"].Value<int>(), packet["args"]);
             break;
         case "response":
             ant = context.GetChannel().GetTag() as RemoteAnt;
             ant.ResponseTask(packet["t_id"].Value<int>(), packet["args"]);
             break;
         default:
             System.Console.WriteLine(packet);
             break;
     }
 }
コード例 #17
0
ファイル: Handler.cs プロジェクト: shlee322/Netronics
 // 클라이언트로부터 메시지가 왔을때 호출
 public void MessageReceive(IReceiveContext context)
 {
     context.GetChannel().SendMessage(context.GetMessage()); // 에코 서버인 만큼 온 데이터를 그대로 전송
 }
コード例 #18
0
ファイル: Manager.cs プロジェクト: shlee322/Netronics
 public void Connected(IReceiveContext context)
 {
     context.GetChannel().SendMessage(_processor.GetJoinServicePacket());
 }
コード例 #19
0
 public void Connected(IReceiveContext context)
 {
     Kernel.GetKernel().QueenConnected(context.GetChannel());
 }
コード例 #20
0
ファイル: HttpHandler.cs プロジェクト: shlee322/Netronics
        public void MessageReceive(IReceiveContext context)
        {
            var request = context.GetMessage() as Request;
            if(request == null)
                return;

            Processing(context.GetChannel(), request);

            if (request.GetHeader("Connection") == null || request.GetHeader("Connection") == "close")
                context.GetChannel().Disconnect();
        }
コード例 #21
0
ファイル: Client.cs プロジェクト: shlee322/Netronics
 // 클라이언트가 접속시 호출
 public void Connected(IReceiveContext channel)
 {
     channel.GetChannel().SendMessage("test" + i++);
 }
コード例 #22
0
ファイル: Handler.cs プロジェクト: shlee322/Netronics
 public void Disconnected(IReceiveContext context)
 {
     _channelLock.EnterWriteLock();
     _channels.Remove(context.GetChannel());
     _channelLock.ExitWriteLock();
 }
コード例 #23
0
ファイル: Service.cs プロジェクト: shlee322/Netronics
 public void MessageReceive(IReceiveContext context)
 {
     dynamic message = context.GetMessage();
     if (message.type == "connect_service_info")
         _processor.ConnectServiceInfo(context.GetChannel(), (string)message.service, (int)message.id);
 }
コード例 #24
0
ファイル: Handler.cs プロジェクト: shlee322/Netronics
 public void MessageReceive(IReceiveContext context)
 {
     dynamic message = context.GetMessage();
     if(message.type == "join_service")
         _manager.JoinService(context.GetChannel(), (string)message.name, message.id == null ? -1 : (int)message.id, (JArray)message.address, (int)message.port);
 }