public unsafe LoginOutput Login(LoginInput input)
        {
            if (input == null)
            {
                throw new ArgumentNullException(nameof(input));
            }

            byte *pInput  = stackalloc byte[LoginInput.GetSize()];
            byte *pOutput = stackalloc byte[LoginOutput.GetSize()];

            input.WriteTo(pInput);
            int         result = UnsafeNativeMethods.rushquant_trade_Login(this._accountId, pInput, pOutput);
            LoginOutput output = new LoginOutput();

            output.ReadFrom(pOutput);
            if (result != ErrorCode.Success)
            {
                throw new RushQuantClientException(result, output.ErrorMessage);
            }

            return(output);
        }