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(present As msg_type) As FormatException
Return New FormatException(String.Format("unexpected message type: `{0}'", present))
End Function
Friend Function NoRFC5531(paramName As String) As ArgumentException
Return New ArgumentException("structure must be RFC5531", paramName)
End Function
Friend Function Format(frm As String, ParamArray args As Object()) As FormatException
Return New FormatException(String.Format(frm, args))
End Function
Friend Function SystemError(replyBody As reply_body) As ReplyException
Return New ReplyException(replyBody, "system error in RPC-server")
End Function
Friend Function AuthError(replyBody As reply_body, state As auth_stat) As AuthenticateException
Return New AuthenticateException(replyBody, GetAuthDescription(state))
End Function
Friend Function GetAuthDescription(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(replyBody As reply_body, 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(replyBody As reply_body, 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(replyBody As reply_body) As ReplyException
Return New ReplyException(replyBody, "remote hasn't exported program")
End Function
Friend Function ProcedureUnavalible(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