1 #Region "Microsoft.VisualBasic::0068bcbbef44fdf5408d25c33b401e7a, Microsoft.VisualBasic.Core\ApplicationServices\Tools\Network\Protocol\Streams\ArrayAbstract.vb"
2
3     ' Author:
4     
5     '       asuka (amethyst.asuka@gcmodeller.org)
6     '       xie (genetics@smrucc.org)
7     '       xieguigang (xie.guigang@live.com)
8     
9     ' Copyright (c) 2018 GPL3 Licensed
10     
11     
12     ' GNU GENERAL PUBLIC LICENSE (GPL3)
13     
14     
15     ' This program is free software: you can redistribute it and/or modify
16     ' it under the terms of the GNU General Public License as published by
17     ' the Free Software Foundation, either version 3 of the License, or
18     ' (at your option) any later version.
19     
20     ' This program is distributed in the hope that it will be useful,
21     ' but WITHOUT ANY WARRANTY; without even the implied warranty of
22     ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23     ' GNU General Public License for more details.
24     
25     ' You should have received a copy of the GNU General Public License
26     ' along with this program. If not, see <http://www.gnu.org/licenses/>.
27
28
29
30     ' /********************************************************************************/
31
32     ' Summaries:
33
34     '     Class ArrayAbstract
35     
36     '         Properties: Values
37     
38     '         Constructor: (+1 OverloadsSub New
39     
40     
41     ' /********************************************************************************/
42
43 #End Region
44
45 Imports System.Xml.Serialization
46
47 Namespace Net.Protocols.Streams.Array
48
49     Public MustInherit Class ArrayAbstract(Of T) : Inherits RawStream
50
51         <XmlAttribute("T")>
52         Public Overridable Property Values As T()
53
54         Protected ReadOnly __serialization As Func(Of T, Byte())
55         Protected ReadOnly __deserialization As Func(Of Byte(), T)
56
57         ''' <summary>
58         ''' 由于这个模块是专门应用于服务器端的数据交换的模块,所以稳定性优先,
59         ''' 这里面的函数都是安全的数组访问方法
60         ''' </summary>
61         ''' <param name="index"></param>
62         ''' <returns></returns>
63         Default Public Property value(index As IntegerAs T
64             Get
65                 Return Values.ElementAtOrDefault(index)
66             End Get
67             Set(value As T)
68                 Call Values.Set(index, value)
69             End Set
70         End Property
71
72         Sub New(serialize As Func(Of T, Byte()), load As Func(Of Byte(), T))
73             __serialization = serialize
74             __deserialization = load
75         End Sub
76     End Class
77 End Namespace