Beispiel #1
0
        /// <summary>
        /// Connects to remote endpoint
        /// </summary>
        public Task <ISocket> Connect(EndPoint endPoint, SocketType socketType = SocketType.Stream,
                                      ProtocolType protocolType = ProtocolType.IP, CancellationToken cancellation = default(CancellationToken))
        {
            cancellation.ThrowIfCancellationRequested();
            var pooled       = _pool.Get();
            var connectToken = new ConnectToken(cancellation, ConnectCancelled, pooled);
            var e            = pooled.Instance;

            e.RemoteEndPoint = endPoint;
            e.UserToken      = connectToken;
            e.Completed     += ConnectCompleted;
            try
            {
                if (!Socket.ConnectAsync(socketType, protocolType, e))
                {
                    ConnectCompleted(null, e);
                }
            }
            catch (Exception ex)
            {
                ClearConnect(e);
                connectToken.TrySetException(ex);
            }
            return(connectToken.Task);
        }
        private static void SocketAsyncEventCompleted(object sender, SocketAsyncEventArgs e)
        {
            e.Completed -= SocketAsyncEventCompleted;
            ConnectToken connectToken = (ConnectToken)e.UserToken;

            e.UserToken = null;
            connectToken.Callback(sender as Socket, connectToken.State, e, null);
        }
Beispiel #3
0
        public void Disconnect()
        {
            Running = false;

            ConnectToken?.Cancel();
            ListenToken?.Cancel();

            try {
                Socket.Shutdown(SocketShutdown.Both);
            } catch (Exception) {
            }
        }
Beispiel #4
0
 private void ConnectCancelled(ConnectToken token, SocketAsyncEventArgs e)
 {
     if (token.IsCompleted)
     {
         return;
     }
     Socket.CancelConnectAsync(e);
     if (token.IsCompleted)
     {
         return;
     }
     ((ConnectToken)e.UserToken).TrySetCanceled();
     ClearConnect(e);
 }
        public async Task <IConnectRootResponse <IConnectToken> > GetLogin(string email)
        {
            try
            {
                IConnectRootResponse <IConnectToken> response = new ConnectRootResponse <IConnectToken>();
                IConnectToken resposeToken = new ConnectToken();

                var userInfo = await this._connectDatabaseRepository.GetUserAsync(email);

                if (userInfo.Status.Equals(ConnectConstants.Success))
                {
                    var tokenHandler = new JwtSecurityTokenHandler();
                    var key          = Encoding.ASCII.GetBytes(this._appSettings.ConnectJwt.ApiSecret);

                    DateTime expiryTime      = DateTime.UtcNow.AddSeconds(this._appSettings.ConnectJwt.AccessTokenLongExpireTime);
                    var      tokenDescriptor = new SecurityTokenDescriptor
                    {
                        Subject = new ClaimsIdentity(new Claim[]
                        {
                            new Claim(ClaimTypes.Name, userInfo.ResponseData.Name),
                            new Claim(ClaimTypes.Email, userInfo.ResponseData.Email)
                        }),
                        Expires            = expiryTime,
                        SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
                    };
                    var token       = tokenHandler.CreateToken(tokenDescriptor);
                    var tokenString = tokenHandler.WriteToken(token);


                    this._cpLogger.LogInfo($"AccountService->GetLogin-> Success for the email:: {email}");

                    resposeToken.ExpiresIn   = this._appSettings.ConnectJwt.AccessTokenLongExpireTime;
                    resposeToken.TokenType   = "bearer";
                    resposeToken.AccessToken = tokenString;

                    response.Status       = ConnectConstants.Success;
                    response.Message      = ConnectResponseCodes.CP026_MESSAGE;
                    response.ResponseCode = ConnectResponseCodes.CP026;
                    response.ResponseData = resposeToken;
                }
                else
                {
                    response.Message      = ConnectResponseCodes.CP029_MESSAGE;
                    response.ResponseCode = ConnectResponseCodes.CP029;
                }

                return(response);
            }
            catch (Exception) { throw; }
        }