#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