当前位置: 首页>>代码示例>>C#>>正文


C# IChannel.SendMessage方法代码示例

本文整理汇总了C#中IChannel.SendMessage方法的典型用法代码示例。如果您正苦于以下问题:C# IChannel.SendMessage方法的具体用法?C# IChannel.SendMessage怎么用?C# IChannel.SendMessage使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IChannel的用法示例。


在下文中一共展示了IChannel.SendMessage方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: JoinService

        public Service JoinService(IChannel channel, int id, JArray address, int port)
        {
            if (id == -1)
            {
                //_servicesLock.EnterWriteLock();

                id = ++_maxIndex;
                if (_maxIndex >= _services.Length) //공간이 작다. 공간을 늘린다.
                {
                    var temp = new Service[_services.Length];
                    System.Array.Copy(_services, temp, _services.Length);
                    _services = temp;
                }

                _services[id] = new Service(this, id, address, port);

                dynamic packet = new JObject();
                packet.type = "change_service_id";
                packet.id = id;
                channel.SendMessage(packet);
                //_servicesLock.ExitWriteLock();
            }

            //_servicesLock.EnterReadLock();
            var service = _services[id];
            //_servicesLock.ExitReadLock();

            service.AddChannel(channel);

            return service;
        }
开发者ID:shlee322,项目名称:Netronics,代码行数:31,代码来源:Services.cs

示例2: Connected

 public void Connected(IChannel channel)
 {
     channel.SetTag(false);
     channelLock.EnterWriteLock();
     _channels.AddLast(channel);
     channelLock.ExitWriteLock();
     SendMessage("hi! " + channel + "\r\n");
     channel.SendMessage("your name : ");
 }
开发者ID:victoryfree,项目名称:Netronics,代码行数:9,代码来源:Handler.cs

示例3: RequestJoinAnt_1

        private void RequestJoinAnt_1(IChannel channel, JObject args)
        {
            var ants = QueenAnt.GetQueenAnt().GetAnts(args.Value<int>("id"));
            var ant = ants.JoinAnt(channel, args);

            var network = QueenAnt.GetQueenAnt().GetNetwork(ant);

            var packet = new JObject();
            packet.Add("id", ant.GetId());
            packet.Add("network", new JArray(network));
            channel.SendMessage("approve_join_ant", packet);
            _workEvent.WaitOne();
        }
开发者ID:shlee322,项目名称:Netronics,代码行数:13,代码来源:AntManager.cs

示例4: MessageReceive

 public void MessageReceive(IChannel channel, dynamic message)
 {
     if (channel.GetTag() is bool)
     {
         channel.SetTag(((string)message).Substring(0, ((string)message).LastIndexOf("\r\n", System.StringComparison.Ordinal)));
         SendMessage(channel + " name is " + channel.GetTag() + "\r\n> ");
         return;
     }
     if (message == "\r\n")
     {
         channel.SendMessage("\r\n> ");
         return;
     }
     SendMessage(channel.GetTag() + " : " + message + "> ");
 }
开发者ID:victoryfree,项目名称:Netronics,代码行数:15,代码来源:Handler.cs

示例5: Handle

        public void Handle(IChannel channel, Request request)
        {
            var contact = new HttpContact(channel, request, new Response {Protocol = request.GetProtocol()});
            if(contact.GetRequest().GetProtocol() == "HTTP/1.1")
                contact.GetResponse().Protocol = "1.1";

            try
            {
                _action(contact, _rx.Split(request.GetPath()));
            }
            catch (Exception e)
            {
                contact.GetResponse().Status = 500;
                contact.GetResponse().SetContent(e.ToString());
            }

            if (contact.IsAutoSendResponse)
                channel.SendMessage(contact.GetResponse());
        }
开发者ID:victoryfree,项目名称:Netronics,代码行数:19,代码来源:DynamicUriHandler.cs

示例6: Handle

        public void Handle(IChannel channel, Request request)
        {
            var response = new Response();
            response.Protocol = request.GetProtocol();
            FileStream reader = null;
            try
            {
                reader = new FileStream(string.Format(_path, _rx.Split(request.GetPath())), FileMode.Open, FileAccess.Read);

                int index = request.GetPath().LastIndexOf(".");
                if(index != -1 && index+1 < request.GetPath().Length)
                {
                    try
                    {
                        string extension = request.GetPath().Substring(index+1);
                        response.ContentType = ContentTypeDictionary[extension];
                    }
                    catch (Exception)
                    {
                    }
                }

                if(response.ContentType.StartsWith("text/"))
                    response.SetContent(new StreamReader(reader).ReadToEnd());
                else
                    response.SetContent(reader);
            }
            catch (Exception)
            {
                response.Status = 404;
            }

            if (reader != null)
                reader.Close();

            channel.SendMessage(response);
        }
开发者ID:victoryfree,项目名称:Netronics,代码行数:37,代码来源:StaticUriHandler.cs

示例7: AddService

        private void AddService(IChannel channel, Services services, int id, JArray address, int port)
        {
            var service = services.JoinService(channel, id, address, port);

            if (id == -1)
            {
                dynamic packet = new JObject();
                packet.type = "max_entity_id";
                packet.value = 10000;
                channel.SendMessage(packet);

                var networks = _networkManager.GetNetworks(service);

                int notifyServiceCount = 0;
                foreach (var network in networks)
                {
                    var remoteServiceName = network.Service1 == services.GetServicesName() ? network.Service2 : network.Service1;
                    var remoteService = GetServices(remoteServiceName);
                    if (remoteService == null)
                        continue;
                    notifyServiceCount += remoteService.NotifyJoinService(service, network);
                }
                //Interlocked.Increment
                //여기서 광역 락 시전!
                //추가 됬다고 정보를 알린 모든 서비스에서 승인이 떨어지면 다음꺼 처리.
                if (notifyServiceCount > 0)
                {
                    _addremoveService = service;
                    _notifyServiceCount = notifyServiceCount;
                    _nextAddRemoveProcessing = new AutoResetEvent(false);
                    _nextAddRemoveProcessing.WaitOne();
                }
            }
        }
开发者ID:shlee322,项目名称:Netronics,代码行数:34,代码来源:ServiceManager.cs

示例8: MessageReceive

 public void MessageReceive(IChannel channel, dynamic message)
 {
     channel.SendMessage(message);
 }
开发者ID:victoryfree,项目名称:Netronics,代码行数:4,代码来源:WebSocketHandler.cs

示例9: QueenConnected

 public void QueenConnected(IChannel channel)
 {
     _queenChannel = channel;
     channel.SendMessage("get_ant_name_list", null);
 }
开发者ID:shlee322,项目名称:Netronics,代码行数:5,代码来源:Kernel.cs

示例10: UpgradeWebSocket

        private void UpgradeWebSocket(IChannel channel, Request request)
        {
            var response = new Response { Status = 101, Protocol="1.1"};

            var protocol = channel as IKeepProtocolChannel;
            if (protocol == null)
                return;

            var finder = GetWebSocketUriFinder(request);
            if (finder == null)
                return;

            var handler = channel as IKeepHandlerChannel;
            if (handler == null)
                return;

            handler.SetHandler((IChannelHandler)finder.GetHandler(request.GetPath()));
            response.GetHeader().AppendLine("Upgrade: websocket")
                .AppendLine("Connection: Upgrade")
                .AppendLine("Sec-WebSocket-Accept: " + GetWebSocketAcceptCode(request.GetHeader("Sec-WebSocket-Key")));
            channel.SendMessage(response);
            protocol.SetProtocol(WebSocketProtocol.Protocol);
            handler.GetHandler().Connected(channel);
        }
开发者ID:victoryfree,项目名称:Netronics,代码行数:24,代码来源:HttpHandler.cs

示例11: Processing

        private void Processing(IChannel channel, Request request)
        {
            //웹소켓 요청인가?
            if (request.GetHeader("connection") == "Upgrade")
            {
                if (request.GetHeader("upgrade") == "websocket")
                    UpgradeWebSocket(channel, request);
                return;
            }

            //JSON
            if (request.GetHeader("Accept") != null && request.GetHeader("Accept").IndexOf("application/json") >= 0)
            {
                UriFinder finder = GetJSONUriFinder(request);
                if (finder != null)
                {
                    var response = new Response();
                    response.SetContent(finder.GetHandler(request.GetPath()).ToString());
                    response.ContentType = "application/json";
                    response.Protocol = request.GetProtocol();
                    channel.SendMessage(response);
                    return;
                }
            }

            //여기서 여러가지 예외 처리를!
            IUriHandler handler = GetUriHandler(channel, request);
            if (handler != null)
            {
                handler.Handle(channel, request);
            }
            else
            {
                var response = new Response();
                response.Status = 401;
                response.Protocol = request.GetProtocol();
                channel.SendMessage(response);
            }
        }
开发者ID:victoryfree,项目名称:Netronics,代码行数:39,代码来源:HttpHandler.cs

示例12: UpgradeWebSocket

        private void UpgradeWebSocket(IChannel channel, Request request)
        {
            var response = new Response { Status = 101, Protocol="1.1"};

            var finder = GetWebSocketUriFinder(request);
            if (finder == null)
                return;

            channel.SetConfig("handler", finder.GetHandler(request.GetPath()));
            //((IChannelHandler)channel.GetConfig("handler")).GetHandler();
            response.GetHeader().AppendLine("Upgrade: websocket")
                .AppendLine("Connection: Upgrade")
                .AppendLine("Sec-WebSocket-Accept: " + GetWebSocketAcceptCode(request.GetHeader("Sec-WebSocket-Key")));
            channel.SendMessage(response);
            channel.SetConfig("encoder", Protocol.PacketEncoder.WebSocket.WebSocketEncoder.Encoder);
            channel.SetConfig("decoder", Protocol.PacketEncoder.WebSocket.WebSocketDecoder.Decoder);
            //protocol.SetProtocol(WebSocketProtocol.Protocol);
            ((IChannelHandler)channel.GetConfig("handler")).Connected(null/**/);
            //handler.GetHandler().Connected(channel);
        }
开发者ID:shlee322,项目名称:Netronics,代码行数:20,代码来源:HttpHandler.cs

示例13: MessageReceive

 public void MessageReceive(IChannel channel, dynamic message)
 {
     Request request = message;
     channel.SendMessage(new Response());
 }
开发者ID:victoryfree,项目名称:Netronics,代码行数:5,代码来源:HttpTemplateTest.cs


注:本文中的IChannel.SendMessage方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。