Imports System.Runtime.CompilerServices
Imports Microsoft.VisualBasic.CommandLine
Imports Microsoft.VisualBasic.ComputingServices.ComponentModel
Imports Microsoft.VisualBasic.Net
Imports Microsoft.VisualBasic.Net.Abstract
Imports Microsoft.VisualBasic.Net.Protocols
Imports Microsoft.VisualBasic.Net.Protocols.Reflection
Namespace TaskHost
'''
''' 分布式计算之中的远端调用的堆栈协议
'''
Public Module Protocols
'''
''' Task remotes protocols
'''
Public Enum TaskProtocols As Long
'''
''' Free a object pointer on the remote machine.(释放掉某一个资源)
'''
Free = -1000L
#Region "Task"
'''
''' Invoke a function remotely
'''
Invoke = 0L
'''
''' Invoke a function as a linq data source.
'''
InvokeLinq
'''
''' Gets the portal of the remote FileSystem
'''
RemoteFileSystem
#End Region
#Region "LINQ supports"
'''
''' Linq data source move next
'''
MoveNext
'''
''' Resets the iterator of the remote linq source
'''
Reset
'''
''' The remote linq source reads done! Exit the iterator function.
'''
ReadsDone = -1000L
#End Region
End Enum
Public ReadOnly Property ProtocolEntry As Long =
New Protocol(GetType(TaskProtocols)).EntryPoint
'''
''' Resets remote data source by
'''
'''
Public Function LinqReset() As RequestStream
Return New RequestStream(ProtocolEntry, TaskProtocols.Reset)
End Function
Public Function GetPortal(Of Tsvr As IServicesSocket)(master As IMasterBase(Of Tsvr)) As IPEndPoint
Dim ip As String = If(EnvironmentLocal, AsynInvoke.LocalIPAddress, GetMyIPAddress())
Dim port As Integer = master.__host.LocalPort
Return New IPEndPoint(ip, port)
End Function
Public Function Shell(exe As String, args As String) As Integer
Dim proc As New IORedirect(exe, args)
Return proc.Run
End Function
End Module
End Namespace