Exemplo n.º 1
0
 public void CacheToken(string nick, IUserToken token)
 {
     using (_mutex.AquireWriteLock())
     {
         _tokens[nick] = token;
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// 方法执行后
 /// </summary>
 /// <param name="userToken"></param>
 /// <param name="serviceName"></param>
 /// <param name="methodName"></param>
 /// <param name="args"></param>
 /// <param name="result"></param>
 public abstract void OnActionExecuted(IUserToken userToken, string serviceName, string methodName, object[] args, object result);
Exemplo n.º 3
0
 private void ReplyPublish(IUserToken ut, QueueResult data)
 {
     _exchange.AcceptPublish(ut.ID, data);
 }
Exemplo n.º 4
0
 private void ReplyUnsubscribe(IUserToken ut, QueueResult data)
 {
     _exchange.Unsubscribe(data);
 }
Exemplo n.º 5
0
 public void End(IUserToken userToken, byte[] data)
 {
     _serverSokcet.End(userToken.ID, data);
 }
Exemplo n.º 6
0
 public static void Add(IUserToken IUserToken)
 {
     _session.Set(IUserToken.ID, IUserToken, _timeOut);
 }
Exemplo n.º 7
0
 /// <summary>
 /// 处理业务逻辑
 /// </summary>
 /// <param name="userToken"></param>
 public abstract void HttpHandle(IUserToken userToken);
Exemplo n.º 8
0
        protected override void OnReceiveBytes(IUserToken userToken, byte[] data)
        {
            var mUserToken = (MessageUserToken)userToken;

            userToken.Coder.Pack(data, null, (s) =>
            {
                //todo 消息处理

                if (s.Content != null)
                {
                    try
                    {
                        var cm = ConvertHelper.PBDeserialize <ChatMessage>(s.Content);

                        switch (cm.Type)
                        {
                        case ChatMessageType.Login:
                            ReplyLogin(mUserToken, cm);
                            break;

                        case ChatMessageType.Subscribe:
                            ReplySubscribe(mUserToken, cm);
                            break;

                        case ChatMessageType.UnSubscribe:
                            ReplyUnsubscribe(mUserToken, cm);
                            break;

                        case ChatMessageType.ChannelMessage:
                            ReplyChannelMessage(mUserToken, cm);
                            break;

                        case ChatMessageType.PrivateMessage:
                            ReplyPrivateMessage(mUserToken, cm);
                            break;

                        case ChatMessageType.CreateGroup:
                            ReplyCreateGroup(mUserToken, cm);
                            break;

                        case ChatMessageType.AddMember:
                            ReplyAddMember(mUserToken, cm);
                            break;

                        case ChatMessageType.RemoveMember:
                            ReplyRemoveMember(mUserToken, cm);
                            break;

                        case ChatMessageType.RemoveGroup:
                            ReplyRemoveGroup(mUserToken, cm);
                            break;

                        case ChatMessageType.GroupMessage:
                            ReplyGroupMessage(mUserToken, cm);
                            break;

                        default:
                            throw new Exception("未知的协议");
                        }
                    }
                    catch (Exception ex)
                    {
                        Disconnect(userToken, ex);
                    }
                }
            }, null);
        }
 public PermissionHandler(IUserToken user)
 {
     _user = user;
 }
Exemplo n.º 10
0
 public bool IsLogin(IUserToken token)
 {
     return(this._onlineAccMap.ContainsKey(token));
 }
Exemplo n.º 11
0
 public bool IsOnline(IUserToken token)
 {
     return(this._tokenToId.ContainsKey(token));
 }
Exemplo n.º 12
0
 public void End(IUserToken userToken, byte[] data)
 {
     ((IocpServerSocket)_serverSokcet).End(userToken, data);
 }
Exemplo n.º 13
0
 public override void ClientConnect(IUserToken token)
 {
 }
Exemplo n.º 14
0
 internal void Disconnect(IUserToken userToken)
 {
     _server.Disconnecte(userToken);
 }
Exemplo n.º 15
0
        /// <summary>
        /// 回复
        /// </summary>
        /// <param name="userToken"></param>
        /// <param name="msg"></param>
        internal void Reply(IUserToken userToken, RSocketMsg msg)
        {
            var data = ((RUnpacker)userToken.Unpacker).Encode(msg);

            _server.SendAsync(userToken.ID, data);
        }
Exemplo n.º 16
0
 public AuthService(IUserToken userToken)
 {
     _userToken = userToken;
 }
Exemplo n.º 17
0
 internal void End(IUserToken userToken)
 {
     WebHost.End(userToken, this.ToBytes());
 }
Exemplo n.º 18
0
        /// <summary>
        /// 处理业务逻辑
        /// </summary>
        /// <param name="userToken"></param>
        /// <param name="httpMessage"></param>
        public override void HttpHandle(IUserToken userToken, HttpMessage httpMessage)
        {
            base.HttpHandle(userToken, httpMessage);

            IHttpResult result = null;

            try
            {
                switch (Request.Method)
                {
                case ConstHelper.GET:
                case ConstHelper.POST:
                case ConstHelper.PUT:
                case ConstHelper.DELETE:

                    if (Request.Query.Count > 0)
                    {
                        foreach (var item in Request.Query)
                        {
                            Request.Parmas[item.Key] = item.Value;
                        }
                    }
                    if (Request.Forms.Count > 0)
                    {
                        foreach (var item in Request.Forms)
                        {
                            Request.Parmas[item.Key] = item.Value;
                        }
                    }
                    if (OnRequestDelegate != null)
                    {
                        OnRequestDelegate.Invoke(this);
                    }
                    else
                    {
                        result = GetActionResult();
                    }
                    break;

                case ConstHelper.OPTIONS:
                    result = new HttpEmptyResult();
                    break;

                default:
                    result = new HttpContentResult("不支持的请求方式", System.Net.HttpStatusCode.HttpVersionNotSupported);
                    break;
                }
            }
            catch (Exception ex)
            {
                result = OnException?.Invoke(this, ex);
            }

            if (result != null)
            {
                if (!(result is IBigDataResult))
                {
                    if (result is IFileResult && _webHost.WebConfig.IsStaticsCached)
                    {
                        Response.SetCached(result, "60,60");
                    }
                    else
                    {
                        Response.SetCached(result, this.Session.CacheCalcString);
                    }
                    Response.End();
                }
            }
        }
Exemplo n.º 19
0
        private void ReplyPong(IUserToken ut, QueueResult data)
        {
            var qcoder = (QUnpacker)ut.Unpacker;

            _serverSokcet.Send(ut.ID, qcoder.QueueCoder.Pong(data.Name));
        }
Exemplo n.º 20
0
 /// <summary>
 /// 回复
 /// </summary>
 /// <param name="userToken"></param>
 /// <param name="msg"></param>
 internal void Reply(IUserToken userToken, RSocketMsg msg)
 {
     SendAsync(userToken, ((RCoder)userToken.Unpacker).Encode(msg));
 }
Exemplo n.º 21
0
 public AuthToken(IAuthenticationModule issuer, IUserToken user, AccessLevel accessLevel)
 {
     _issuer = issuer;
     _user = user;
     _accessLevel = accessLevel;
 }
Exemplo n.º 22
0
 public void Reply(IUserToken userToken, byte[] data)
 {
     base.Send(userToken, data);
     base.Disconnect(userToken);
 }
Exemplo n.º 23
0
 public void Disconnecte(IUserToken userToken)
 {
     _serverSokcet.Disconnect(userToken.ID);
 }
Exemplo n.º 24
0
 private void ReplyBase(IUserToken userToken, PSocketMsg msg)
 {
     base.SendAsync(userToken, msg.ToBytes());
 }
Exemplo n.º 25
0
 void Set(IUserToken IUserToken)
 {
     _session.Set(IUserToken.ID, IUserToken, _timeOut);
 }
Exemplo n.º 26
0
 private void ReplyHeart(IUserToken userToken)
 {
     ReplyBase(userToken, PSocketMsg.Parse(null, TcpP2pType.Heart));
 }
Exemplo n.º 27
0
        private void ReplyPong(IUserToken ut, QueueResult data)
        {
            var qcoder = (QUnpacker)ut.Unpacker;

            base.BeginSend(ut, qcoder.QueueCoder.Pong(data.Name));
        }
Exemplo n.º 28
0
 private void ReplyP2PResponse(IUserToken userToken)
 {
     ReplyBase(userToken, PSocketMsg.Parse(null, TcpP2pType.P2PResponse));
 }
Exemplo n.º 29
0
 /// <summary>
 /// 方法执行前
 /// </summary>
 /// <param name="userToken"></param>
 /// <param name="serviceInfo"></param>
 /// <param name="args"></param>
 /// <returns></returns>
 public abstract bool OnActionExecuting(IUserToken userToken, string serviceName, string methodName, object[] args);
Exemplo n.º 30
0
        private void DataSocket_OnAccepted(object obj)
        {
            _userToken = obj as IUserToken;

            IsConnected = true;
        }
Exemplo n.º 31
0
        public static object Reversal(IUserToken userToken, string serviceName, string methodName, object[] inputs)
        {
            lock (_locker)
            {
                try
                {
                    var serviceInfo = RPCMapping.Get(serviceName, methodName);

                    if (serviceInfo == null)
                    {
                        throw new RPCNotFundException($"当前请求找不到:{serviceName}/{methodName}", null);
                    }

                    var nargs = new object[] { userToken, serviceName, methodName, inputs };

                    if (serviceInfo.FilterAtrrs != null && serviceInfo.FilterAtrrs.Count > 0)
                    {
                        foreach (var arr in serviceInfo.FilterAtrrs)
                        {
                            var goOn = (bool)arr.GetType().GetMethod("OnActionExecuting").Invoke(arr, nargs.ToArray());

                            if (!goOn)
                            {
                                return(new RPCNotFundException("当前逻辑已被拦截!", null));
                            }
                        }
                    }

                    if (serviceInfo.ActionFilterAtrrs != null && serviceInfo.ActionFilterAtrrs.Count > 0)
                    {
                        foreach (var arr in serviceInfo.ActionFilterAtrrs)
                        {
                            var goOn = (bool)arr.GetType().GetMethod("OnActionExecuting").Invoke(arr, nargs.ToArray());

                            if (!goOn)
                            {
                                return(new RPCNotFundException("当前逻辑已被拦截!", null));
                            }
                        }
                    }

                    var result = ReversalMethod(serviceInfo.Mothd, serviceInfo.Instance, inputs);

                    nargs = new object[] { userToken, serviceName, methodName, inputs, result };

                    if (serviceInfo.FilterAtrrs != null && serviceInfo.FilterAtrrs.Count > 0)
                    {
                        foreach (var arr in serviceInfo.FilterAtrrs)
                        {
                            arr.GetType().GetMethod("OnActionExecuted").Invoke(arr, nargs);
                        }
                    }

                    if (serviceInfo.ActionFilterAtrrs != null && serviceInfo.ActionFilterAtrrs.Count > 0)
                    {
                        foreach (var arr in serviceInfo.FilterAtrrs)
                        {
                            arr.GetType().GetMethod("OnActionExecuted").Invoke(arr, nargs);
                        }
                    }
                    return(result);
                }
                catch (Exception ex)
                {
                    if (ex.Message.Contains("找不到此rpc方法"))
                    {
                        return(new RPCNotFundException("找不到此rpc方法", ex));
                    }
                    else
                    {
                        return(new RPCNotFundException("找不到此rpc方法", ex));
                    }
                }
            }
        }
Exemplo n.º 32
0
 public void End(IUserToken userToken, byte[] data)
 {
     _serverSocket.End(userToken, data);
 }