1 #Region "Microsoft.VisualBasic::248d596eb8cb103dbb0d014803dd57d1, Microsoft.VisualBasic.Core\ApplicationServices\Tools\Network\Abstract.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 IProtocolHandler
35     
36     
37     
38     '     Delegate Sub
39     
40     
41     '     Delegate Function
42     
43     
44     '     Delegate Sub
45     
46     
47     '     Interface IServicesSocket
48     
49     '         Properties: IsRunning, IsShutdown, LocalPort
50     
51     '         Function: (+2 Overloads) Run
52     
53     '     Interface IDataRequestHandler
54     
55     '         Properties: Responsehandler
56     
57     
58     
59     
60     
61     
62     
63     ' /********************************************************************************/
64
65 #End Region
66
67 Imports Microsoft.VisualBasic.ComponentModel
68 Imports Microsoft.VisualBasic.Net.Protocols
69 Imports Microsoft.VisualBasic.Net.Protocols.Reflection
70
71 Namespace Net.Abstract
72
73     ''' <summary>
74     ''' Object for handles the request <see cref="Protocol"/>.
75     ''' </summary>
76     Public MustInherit Class IProtocolHandler
77
78         MustOverride ReadOnly Property ProtocolEntry As Long
79         MustOverride Function HandleRequest(CA As Long, request As RequestStream, remoteDevcie As System.Net.IPEndPoint) As RequestStream
80     End Class
81
82 #Region "Delegate Abstract Interface"
83
84     Public Delegate Sub ForceCloseHandle(socket As StateObject)
85
86     ''' <summary>
87     ''' 
88     ''' </summary>
89     ''' <param name="CA"><see cref="SSL.Certificate.uid"/></param>
90     ''' <param name="request"></param>
91     ''' <param name="RemoteAddress"></param>
92     ''' <returns></returns>
93     Public Delegate Function DataRequestHandler(CA As Long, request As RequestStream, RemoteAddress As System.Net.IPEndPoint) As RequestStream
94
95     ''' <summary>
96     ''' 处理错误的工作逻辑的抽象接口
97     ''' </summary>
98     ''' <param name="ex">Socket的内部错误信息</param>
99     ''' <remarks></remarks>
100     Public Delegate Sub ExceptionHandler(ex As Exception)
101 #End Region
102
103     ''' <summary>
104     ''' Socket listening object which is running at the server side asynchronous able multiple threading.
105     ''' (运行于服务器端上面的Socket监听对象,多线程模型)
106     ''' </summary>
107     ''' <remarks></remarks>
108     Public Interface IServicesSocket : Inherits IDisposable, ITaskDriver, IDataRequestHandler
109
110         ''' <summary>
111         ''' The server services listening on this local port.(当前的这个服务器对象实例所监听的本地端口号)
112         ''' </summary>
113         ''' <value></value>
114         ''' <returns></returns>
115         ''' <remarks></remarks>
116         ReadOnly Property LocalPort As Integer
117         ReadOnly Property IsShutdown As Boolean
118         ReadOnly Property IsRunning As Boolean
119
120         ''' <summary>
121         ''' This server waits for a connection and then uses  asychronous operations to
122         ''' accept the connection, get data from the connected client,
123         ''' echo that data back to the connected client.
124         ''' It then disconnects from the client and waits for another client.(请注意,当服务器的代码运行到这里之后,代码将被阻塞在这里)
125         ''' </summary>
126         ''' <remarks></remarks>
127         Overloads Function Run() As Integer
128
129         ''' <summary>
130         ''' This server waits for a connection and then uses  asychronous operations to
131         ''' accept the connection, get data from the connected client,
132         ''' echo that data back to the connected client.
133         ''' It then disconnects from the client and waits for another client.(请注意,当服务器的代码运行到这里之后,代码将被阻塞在这里)
134         ''' </summary>
135         ''' <remarks></remarks>
136         Overloads Function Run(localEndPoint As System.Net.IPEndPoint) As Integer
137     End Interface
138
139     Public Interface IDataRequestHandler
140
141         ''' <summary>
142         ''' This function pointer using for the data request handling of the data request from the client socket.
143         ''' (这个函数指针用于处理来自于客户端的请求)
144         ''' </summary>
145         ''' <remarks></remarks>
146         Property Responsehandler As Net.Abstract.DataRequestHandler
147     End Interface
148 End Namespace