public void CacheToken(string nick, IUserToken token) { using (_mutex.AquireWriteLock()) { _tokens[nick] = token; } }
/// <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);
private void ReplyPublish(IUserToken ut, QueueResult data) { _exchange.AcceptPublish(ut.ID, data); }
private void ReplyUnsubscribe(IUserToken ut, QueueResult data) { _exchange.Unsubscribe(data); }
public void End(IUserToken userToken, byte[] data) { _serverSokcet.End(userToken.ID, data); }
public static void Add(IUserToken IUserToken) { _session.Set(IUserToken.ID, IUserToken, _timeOut); }
/// <summary> /// 处理业务逻辑 /// </summary> /// <param name="userToken"></param> public abstract void HttpHandle(IUserToken userToken);
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; }
public bool IsLogin(IUserToken token) { return(this._onlineAccMap.ContainsKey(token)); }
public bool IsOnline(IUserToken token) { return(this._tokenToId.ContainsKey(token)); }
public void End(IUserToken userToken, byte[] data) { ((IocpServerSocket)_serverSokcet).End(userToken, data); }
public override void ClientConnect(IUserToken token) { }
internal void Disconnect(IUserToken userToken) { _server.Disconnecte(userToken); }
/// <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); }
public AuthService(IUserToken userToken) { _userToken = userToken; }
internal void End(IUserToken userToken) { WebHost.End(userToken, this.ToBytes()); }
/// <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(); } } }
private void ReplyPong(IUserToken ut, QueueResult data) { var qcoder = (QUnpacker)ut.Unpacker; _serverSokcet.Send(ut.ID, qcoder.QueueCoder.Pong(data.Name)); }
/// <summary> /// 回复 /// </summary> /// <param name="userToken"></param> /// <param name="msg"></param> internal void Reply(IUserToken userToken, RSocketMsg msg) { SendAsync(userToken, ((RCoder)userToken.Unpacker).Encode(msg)); }
public AuthToken(IAuthenticationModule issuer, IUserToken user, AccessLevel accessLevel) { _issuer = issuer; _user = user; _accessLevel = accessLevel; }
public void Reply(IUserToken userToken, byte[] data) { base.Send(userToken, data); base.Disconnect(userToken); }
public void Disconnecte(IUserToken userToken) { _serverSokcet.Disconnect(userToken.ID); }
private void ReplyBase(IUserToken userToken, PSocketMsg msg) { base.SendAsync(userToken, msg.ToBytes()); }
void Set(IUserToken IUserToken) { _session.Set(IUserToken.ID, IUserToken, _timeOut); }
private void ReplyHeart(IUserToken userToken) { ReplyBase(userToken, PSocketMsg.Parse(null, TcpP2pType.Heart)); }
private void ReplyPong(IUserToken ut, QueueResult data) { var qcoder = (QUnpacker)ut.Unpacker; base.BeginSend(ut, qcoder.QueueCoder.Pong(data.Name)); }
private void ReplyP2PResponse(IUserToken userToken) { ReplyBase(userToken, PSocketMsg.Parse(null, TcpP2pType.P2PResponse)); }
/// <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);
private void DataSocket_OnAccepted(object obj) { _userToken = obj as IUserToken; IsConnected = true; }
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)); } } } }
public void End(IUserToken userToken, byte[] data) { _serverSocket.End(userToken, data); }