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.

81 lines
4.2 KiB

Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks
Namespace Rpc.BindingProtocols.TaskBuilders
''' <summary>
''' RPCBIND is contacted by way of an assigned address specific to the transport being used.
''' For TCP/IP and UDP/IP, for example, it is port number 111. Each transport has such an assigned, well-known address.
''' http://tools.ietf.org/html/rfc1833#section-2.2.1
''' </summary>
Public MustInherit Class BaseRpcBind
Inherits BaseTaskBuilder
Friend Sub New(ByVal conn As IRpcClient, ByVal token As CancellationToken, ByVal attachedToParent As Boolean)
MyBase.New(conn, token, attachedToParent)
End Sub
''' <summary>
''' When a program first becomes available on a machine, it registers itself with RPCBIND running on the same machine.
''' The program passes its program number "r_prog", version number "r_vers", network identifier "r_netid", universal address "r_addr",
''' and the owner of the service "r_owner".
''' The procedure returns a boolean response whose value is TRUE if the procedure successfully established the mapping and FALSE otherwise.
''' The procedure refuses to establish a mapping if one already exists for the ordered set ("r_prog", "r_vers", "r_netid").
''' Note that neither "r_netid" nor "r_addr" can be NULL, and that "r_netid" should be a valid network identifier on the machine making the call.
''' </summary>
Public Function [Set](ByVal arg As rpcb) As Task(Of Boolean)
Return CreateTask(Of rpcb, Boolean)(1UI, arg)
End Function
''' <summary>
''' When a program becomes unavailable, it should unregister itself with the RPCBIND program on the same machine.
''' The parameters and results have meanings identical to those of RPCBPROC_SET.
''' The mapping of the ("r_prog", "r_vers", "r_netid") tuple with "r_addr" is deleted.
''' If "r_netid" is NULL, all mappings specified by the ordered set ("r_prog", "r_vers", *) and the corresponding universal addresses are deleted.
''' Only the owner of the service or the super-user is allowed to unset a service
''' </summary>
Public Function UnSet(ByVal arg As rpcb) As Task(Of Boolean)
Return CreateTask(Of rpcb, Boolean)(2UI, arg)
End Function
''' <summary>
''' Given a program number "r_prog", version number "r_vers", and network identifier "r_netid", this procedure returns the universal address
''' on which the program is awaiting call requests. The "r_netid" field of the argument is ignored and the "r_netid" is inferred from the
''' network identifier of the transport on which the request came in.
''' </summary>
Public Function GetAddr(ByVal arg As rpcb) As Task(Of String)
Return CreateTask(Of rpcb, String)(3UI, arg)
End Function
''' <summary>
''' This procedure lists all entries in RPCBIND's database.
''' The procedure takes no parameters and returns a list of program, version, network identifier, and universal addresses.
''' </summary>
Public Function Dump() As Task(Of List(Of rpcb))
Return CreateTask(Of Xdr.Void, List(Of rpcb))(4UI, New Xdr.Void())
End Function
''' <summary>
''' This procedure returns the local time on its own machine in seconds
''' since the midnight of the First day of January, 1970.
''' </summary>
Public Function GetTime() As Task(Of UInteger)
Return CreateTask(Of Xdr.Void, UInteger)(6UI, New Xdr.Void())
End Function
''' <summary>
''' This procedure converts universal addresses to transport specific addresses.
''' </summary>
Public Function UAddr2TAddr(ByVal arg As String) As Task(Of netbuf)
Return CreateTask(Of String, netbuf)(7UI, arg)
End Function
''' <summary>
''' This procedure converts transport specific addresses to universal addresses.
''' </summary>
Public Function TAddr2Uaddr(ByVal arg As netbuf) As Task(Of String)
Return CreateTask(Of netbuf, String)(8UI, arg)
End Function
End Class
End Namespace