You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Darwinism/Rpc/Exceptions/Exceptions.vb

118 lines
4.9 KiB

#Region "Microsoft.VisualBasic::090bf2b892725ca9852057d30c262620, Rpc\Exceptions\Exceptions.vb"
' Author:
'
' asuka (amethyst.asuka@gcmodeller.org)
' xie (genetics@smrucc.org)
' xieguigang (xie.guigang@live.com)
'
' Copyright (c) 2018 GPL3 Licensed
'
'
' GNU GENERAL PUBLIC LICENSE (GPL3)
'
'
' This program is free software: you can redistribute it and/or modify
' it under the terms of the GNU General Public License as published by
' the Free Software Foundation, either version 3 of the License, or
' (at your option) any later version.
'
' This program is distributed in the hope that it will be useful,
' but WITHOUT ANY WARRANTY; without even the implied warranty of
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
' GNU General Public License for more details.
'
' You should have received a copy of the GNU General Public License
' along with this program. If not, see <http://www.gnu.org/licenses/>.
' /********************************************************************************/
' Summaries:
' Module Exceptions
'
' Function: AuthError, Format, GarbageArgs, GetAuthDescription, NoRFC5531
' ProcedureUnavalible, ProgramMismatch, ProgramUnavalible, RpcVersionError, SystemError
' UnexpectedMessageType
'
'
' /********************************************************************************/
#End Region
Imports System
Imports Rpc.MessageProtocol
Namespace Rpc
Friend Module Exceptions
Friend Function UnexpectedMessageType(ByVal present As msg_type) As FormatException
Return New FormatException(String.Format("unexpected message type: `{0}'", present))
End Function
Friend Function NoRFC5531(ByVal paramName As String) As ArgumentException
Return New ArgumentException("structure must be RFC5531", paramName)
End Function
Friend Function Format(ByVal frm As String, ParamArray args As Object()) As FormatException
Return New FormatException(String.Format(frm, args))
End Function
Friend Function SystemError(ByVal replyBody As reply_body) As ReplyException
Return New ReplyException(replyBody, "system error in RPC-server")
End Function
Friend Function AuthError(ByVal replyBody As reply_body, ByVal state As auth_stat) As AuthenticateException
Return New AuthenticateException(replyBody, GetAuthDescription(state))
End Function
Friend Function GetAuthDescription(ByVal state As auth_stat) As String
Select Case state
Case auth_stat.AUTH_BADCRED
Return "bad credential (seal broken)"
Case auth_stat.AUTH_BADVERF
Return "bad verifier (seal broken)"
Case auth_stat.AUTH_FAILED
Return "unknown reason"
Case auth_stat.AUTH_INVALIDRESP
Return "bogus response verifier"
Case auth_stat.AUTH_OK
Return "success"
Case auth_stat.AUTH_REJECTEDCRED
Return "client must begin new session"
Case auth_stat.AUTH_REJECTEDVERF
Return "verifier expired or replayed"
Case auth_stat.AUTH_TOOWEAK
Return "rejected for security reasons"
Case auth_stat.RPCSEC_GSS_CREDPROBLEM
Return "no credentials for user"
Case auth_stat.RPCSEC_GSS_CTXPROBLEM
Return "problem with context"
Case Else
Return String.Format("unknown state: {0}", state)
End Select
End Function
Friend Function RpcVersionError(ByVal replyBody As reply_body, ByVal info As mismatch_info) As ReplyException
Return New ReplyException(replyBody, String.Format("unsupported RPC version number (supported versions of between {0} and {1})", info.low, info.high))
End Function
Friend Function ProgramMismatch(ByVal replyBody As reply_body, ByVal info As mismatch_info) As ReplyException
Return New ReplyException(replyBody, String.Format("remote can't support program version (supported versions of between {0} and {1})", info.low, info.high))
End Function
Friend Function ProgramUnavalible(ByVal replyBody As reply_body) As ReplyException
Return New ReplyException(replyBody, "remote hasn't exported program")
End Function
Friend Function ProcedureUnavalible(ByVal replyBody As reply_body) As RpcException
Return New ReplyException(replyBody, "program can't support procedure")
End Function
Friend Function GarbageArgs() As RpcException
Return New RpcException("procedure can't decode params")
End Function
End Module
End Namespace