#Region "Microsoft.VisualBasic::c58483be8460f06ce344738ca838bb24, ComputingServices\SharedMemory\HashValue.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 .
' /********************************************************************************/
' Summaries:
' Class HashValue
'
' Properties: Identifier, Type, value
'
' Constructor: (+1 Overloads) Sub New
' Function: GetValueJson, ToString
'
' Structure Argv
'
' Properties: Identifier, value
'
' Constructor: (+1 Overloads) Sub New
' Function: ToString
'
'
' /********************************************************************************/
#End Region
Imports Microsoft.VisualBasic.ComponentModel.Collection.Generic
Imports Microsoft.VisualBasic.Scripting.MetaData
Imports Microsoft.VisualBasic.Serialization
Imports Microsoft.VisualBasic.Serialization.JSON
Namespace SharedMemory
'''
''' The shared variable on the remote machine.
'''
Public Class HashValue : Implements INamedValue
'''
''' The variable name
'''
'''
Public Property Identifier As String Implements INamedValue.Key
'''
''' variable value
'''
'''
Public Property value As Object
'''
''' Simple type information
'''
'''
Public Property Type As TypeInfo
Sub New(name As String, x As Object)
Identifier = name
value = x
Type = New TypeInfo(x.GetType)
End Sub
'''
''' Json serialization for the network transfer.
'''
'''
Public Function GetValueJson() As String
Return JsonContract.GetObjectJson(value, Type.GetType(True))
End Function
Public Overrides Function ToString() As String
Return $"Dim {Identifier} As {Type.ToString} = {JsonContract.GetObjectJson(value, Type.GetType(True))}"
End Function
End Class
'''
''' Variable value for the network transfer
'''
Public Structure Argv : Implements INamedValue
'''
''' The variable name
'''
'''
Public Property Identifier As String Implements INamedValue.Key
'''
''' Json value, and the type information is also included in this property.
'''
'''
Public Property value As TaskHost.Argv
Sub New(name As String, x As Object)
Identifier = name
value = New TaskHost.Argv(x)
End Sub
Public Overrides Function ToString() As String
Return Me.GetJson
End Function
End Structure
End Namespace