Imports Microsoft.VisualBasic.CommandLine.Reflection
Imports Microsoft.VisualBasic.ComputingServices.FileSystem
Imports Microsoft.VisualBasic.ComputingServices.TaskHost
Imports Microsoft.VisualBasic.LINQ.Extensions
'''
''' 我想要构建的是一个去中心化的网格计算框架
'''
Module ServicesProgram
Public Function Main() As Integer
Dim DIR As New FileSystemHost(1526)
Dim fs As New FileSystem(DIR.Portal)
Dim file As New IO.FileStream("Z:\1ST.MP3", System.IO.FileMode.Open, fs)
Dim buf As Byte() = New Byte(5 * 1024 * 100) {}
Call file.Read(buf, Scan0, buf.Length)
Call buf.FlushStream("x:\1....sdfgsdf.mp3")
Dim writeFile As New IO.FileStream("x:\2....dfgdfghf.mp3", System.IO.FileMode.OpenOrCreate, fs)
Call writeFile.Write(buf, Scan0, buf.Length)
Return GetType(ServicesProgram).RunCLI(App.CommandLine, AddressOf TestLocal)
End Function
Private Sub __testLinq()
Dim array = 20.Sequence
Dim source As New LinqProvider(array, GetType(Integer))
Call Threading.Thread.Sleep(100)
Dim reader As New ILinq(Of Integer)(source.Portal)
Dim xr = (From x In reader Where x > 10 Select x).ToArray
End Sub
'''
''' Example of running on local machine
'''
'''
Public Function TestLocal() As Integer
Call __testLinq()
Dim exe As String = App.ExecutablePath
Dim port As Integer = Microsoft.VisualBasic.Net.GetFirstAvailablePort
' Call Process.Start(exe, $"/remote /port {port}").Start() ' example test
' Call Threading.Thread.Sleep(1500)
Dim invoke As New TaskInvoke(port)
Dim remote As New TaskHost("127.0.0.1", port)
Dim msg As String = "Code execute on the remotes!"
Dim remoteFunc As Func(Of String, Integer) = AddressOf TestExample1 ' Gets the function pointer on the remote machine
Call remote.Invoke(Of Integer)(remoteFunc, msg).__DEBUG_ECHO ' gets the value that returns from the remote machine
End Function
Public Function TestExample1(msg As String) As Integer
Call MsgBox(msg, MsgBoxStyle.Information, App.Command) ' remotes have the commandline but the local is empty
Return 100000 * RandomDouble()
End Function
'''
''' Example of running on a remote machine.
'''
'''
'''
Public Function TestRemote(args As CommandLine.CommandLine) As Integer
Dim port As Integer = args.GetValue("/port", 1234)
Dim invoke As New TaskInvoke(port)
Call Pause()
Return 0
End Function
End Module