From 1f645778ae80a3a8801b8bb4d0fcf8feb244ad43 Mon Sep 17 00:00:00 2001
From: chr <chr@mailcom>
Date: 星期三, 09 十月 2024 11:51:23 +0800
Subject: [PATCH] 完善项目,新增插件启用检测;
---
SolidWorksListenerAlert/Properties/Resources.Designer.cs | 71
PluginLisener/PluginLisener.Designer.cs | 38
SolidWorksListener/App.xaml | 9
PluginLisener/Properties/AssemblyInfo.cs | 36
PdmSwPlugin.PropertySetting/CommonSettingControl.xaml | 1
PluginListener/App.config | 9
SolidWorksListenerAlert/MainWindow.xaml | 18
CustomRictBox/SB .xaml | 19
SolidWorksListenerAlert/Properties/Settings.Designer.cs | 30
PluginLisener/.vs/PluginLisener.csproj.dtbcache.json | 1
PluginLisener/ProjectInstaller.resx | 129
PdmSwPlugin.Main/MainControl.xaml | 22
SolidWorksListener/log4net.config | 37
PdmAlert/.vs/PdmAlert/v17/DocumentLayout.backup.json | 102
SolidWorksListener/Properties/Settings.settings | 7
PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml | 9
PluginListener/Properties/AssemblyInfo.cs | 52
PdmSwPlugin.MaterialSelect/PdmSwPlugin.MaterialSelect.csproj | 4
PdmSwPlugin.DrawApprove/DrawApprove.xaml | 240
PluginListener/Alert.xaml | 15
lib/SuperSocket.SocketBase.dll | 0
PluginListener/Properties/Settings.Designer.cs | 26
lib/SuperSocket.SocketBase.XML | 5405 ++++++++++++++++++++++
PdmSwPlugin.Main/MainControl.xaml.cs | 174
.vs/SwPlugin/v17/DocumentLayout.backup.json | 142
InnoSetupScript/PdmSwPlugin.iss | 86
PluginListener/Intercepter.cs | 47
PluginLisener/App.config | 6
SolidWorksListenerAlert/SolidWorksListenerAlert.csproj | 118
AutoUpdater/MainWindow.xaml.cs | 60
PdmSwPlugin.Main/PdmSwPlugin.Main.csproj | 27
SolidWorksListener/SolidWorksListener.csproj | 198
PdmSw/PdmSw.csproj | 14
PdmAlert/.vs/PdmAlert/v17/DocumentLayout.json | 189
.vs/SwPlugin/v17/DocumentLayout.json | 97
PluginListener/log4net.config | 37
PluginListener/Alert.xaml.cs | 49
SolidWorksListener/Properties/Resources.Designer.cs | 71
PluginListener/Properties/app.manifest | 73
SolidWorksListenerAlert/Properties/AssemblyInfo.cs | 52
lib/SuperSocket.Common.XML | 1346 +++++
SolidWorksListener/packages.config | 19
PluginLisener/packages.config | 4
PdmSwPlugin.Main/Constant/PluginConst.cs | 2
PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml.cs | 36
PluginLisener/PluginLisener.csproj | 107
lib/SuperSocket.Common.dll | 0
PdmSwPlugin.Main/SwAddIn/MainControl.cs | 49
PdmSwPlugin.PDM/PdmSwPlugin.PDM.csproj | 4
SolidWorksListenerAlert/App.xaml | 9
PdmSwPlugin.Common/Util/BinUtil.cs | 59
PdmSwPlugin.Main/LoginControl.xaml.cs | 206
lib/SuperSocket.SocketEngine.dll | 0
PdmSwPlugin.Main/Tcp/TcpReqInfo.cs | 34
PluginLisener/PluginLisener.cs | 56
PdmSwPlugin.Main/MainTab.xaml.cs | 41
PluginListener/PluginListener.csproj | 245 +
PluginListener/Program.cs | 32
PluginListener/packages.config | 23
lib/_log4net.xml | 0
SolidWorksListener/Properties/AssemblyInfo.cs | 52
InnoSetupScript/InnoSetupUtil.dll | 0
PluginLisener/Program.cs | 23
SolidWorksListener/Properties/Resources.resx | 117
PdmSwPlugin.Common/PdmSwPlugin.Common.csproj | 6
PluginListener/supersocket.sh | 2
PdmSwPlugin.Common/Style/LinkButton.xaml | 24
SolidWorksListenerAlert/App.config | 6
PluginListener/Util.cs | 184
SolidWorksListenerAlert/Properties/Settings.settings | 7
PdmSw/SwAddin.cs | 3
SolidWorksListenerAlert/App.xaml.cs | 27
PluginListener/Listener.cs | 392 +
PluginListener/Properties/Resources.resx | 117
SolidWorksListenerAlert/Properties/Resources.resx | 117
PdmSw/log4net.config | 63
lib/log4net.dll | 0
PluginLisener/ProjectInstaller.Designer.cs | 56
PluginLisener/.vs/PluginLisener/v17/DocumentLayout.json | 71
SolidWorksListener/Properties/Settings.Designer.cs | 30
SolidWorksListenerAlert/MainWindow.xaml.cs | 34
SolidWorksListener/Listener.cs | 355 +
PdmAlert/PdmAlert.csproj | 4
PdmSwPlugin.Main/LoginControl.xaml | 31
PluginLisener/.vs/PluginLisener/v17/DocumentLayout.backup.json | 53
PluginListener/.vs/PluginListener/v17/DocumentLayout.json | 12
PdmSwPlugin.PropertySetting/CommonSettingControl.xaml.cs | 43
PdmSwPlugin.Common/Entity/DrawAudit/DrawAudit.cs | 8
PdmSwPlugin.DrawApprove/DrawApprove.xaml.cs | 81
SolidWorksListener/WindowUtil.cs | 46
CustomRictBox/SB .xaml.cs | 104
WpfUI/Window1.xaml.cs | 4
SolidWorksListener/App.xaml.cs | 34
PdmSwPlugin.Common/.vs/PdmSwPlugin.Common.csproj.dtbcache.json | 2
PdmSwPlugin.PDM/PdmControl.xaml.cs | 129
PluginListener/WindowUtil.cs | 48
PdmSwPlugin.Main/MainTab.xaml | 27
PluginListener/Properties/Settings.settings | 7
lib/_log4net.dll | 0
lib/SuperSocket.Facility.dll | 0
lib/SuperSocket.SocketEngine.XML | 1291 +++++
PluginLisener/ProjectInstaller.cs | 19
AutoUpdater/AutoUpdater.csproj | 2
PluginListener/Properties/Resources.Designer.cs | 63
WpfUI/.vs/WpfUI.csproj.dtbcache.json | 2
SolidWorksListener/App.config | 6
PdmSwPlugin.Common/Util/Encryptor.cs | 69
CustomRictBox/PdmSwPlugin.UI.csproj | 7
lib/SuperSocket.Facility.XML | 601 ++
PluginListener/supersocket.cmd | 2
110 files changed, 13,827 insertions(+), 546 deletions(-)
diff --git a/.vs/SwPlugin/v17/DocumentLayout.backup.json b/.vs/SwPlugin/v17/DocumentLayout.backup.json
index 5bb3917..bf181c2 100644
--- a/.vs/SwPlugin/v17/DocumentLayout.backup.json
+++ b/.vs/SwPlugin/v17/DocumentLayout.backup.json
@@ -3,16 +3,36 @@
"WorkspaceRootPath": "D:\\Workspace\\PdmSwPlugin2\\",
"Documents": [
{
- "AbsoluteMoniker": "D:0:0:{44BCE7B9-F984-426B-9997-FC1FB1A49CC0}|CustomRictBox\\PdmSwPlugin.UI.csproj|d:\\workspace\\pdmswplugin2\\customrictbox\\customrichbox.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{44BCE7B9-F984-426B-9997-FC1FB1A49CC0}|CustomRictBox\\PdmSwPlugin.UI.csproj|solutionrelative:customrictbox\\customrichbox.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
- {
"AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.drawapprove\\drawapprove.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawapprove.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{44BCE7B9-F984-426B-9997-FC1FB1A49CC0}|CustomRictBox\\PdmSwPlugin.UI.csproj|d:\\workspace\\pdmswplugin2\\customrictbox\\customrichbox.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
- "RelativeMoniker": "D:0:0:{44BCE7B9-F984-426B-9997-FC1FB1A49CC0}|CustomRictBox\\PdmSwPlugin.UI.csproj|solutionrelative:customrictbox\\customrichbox.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
+ "AbsoluteMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.pdm\\pdmcontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
+ "RelativeMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|solutionrelative:pdmswplugin.pdm\\pdmcontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.drawapprove\\drawapprove.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
+ "RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawapprove.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.pdm\\pdmcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|solutionrelative:pdmswplugin.pdm\\pdmcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|d:\\workspace\\pdmswplugin2\\pdmsw\\swaddin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|solutionrelative:pdmsw\\swaddin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.main\\swaddin\\maincontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\swaddin\\maincontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.main\\eventhandler\\baseattacher.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\eventhandler\\baseattacher.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|d:\\workspace\\pdmswplugin2\\pdmsw\\log4net.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
+ "RelativeMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|solutionrelative:pdmsw\\log4net.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
}
],
"DocumentGroupContainers": [
@@ -26,40 +46,104 @@
"Children": [
{
"$type": "Document",
- "DocumentIndex": 1,
- "Title": "DrawApprove.xaml.cs",
- "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
- "RelativeDocumentMoniker": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
- "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
- "RelativeToolTip": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
- "ViewState": "AgIAAIcBAAAAAAAAAAAcwJYBAAANAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-09-04T04:19:25.271Z",
+ "DocumentIndex": 2,
+ "Title": "DrawApprove.xaml",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml",
+ "RelativeDocumentMoniker": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml",
+ "RelativeToolTip": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
+ "WhenOpened": "2024-10-09T03:31:27.843Z",
"EditorCaption": ""
},
{
"$type": "Document",
- "DocumentIndex": 2,
- "Title": "CustomRichBox.xaml",
- "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\CustomRictBox\\CustomRichBox.xaml",
- "RelativeDocumentMoniker": "CustomRictBox\\CustomRichBox.xaml",
- "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\CustomRictBox\\CustomRichBox.xaml",
- "RelativeToolTip": "CustomRictBox\\CustomRichBox.xaml",
+ "DocumentIndex": 1,
+ "Title": "PdmControl.xaml",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml",
+ "RelativeDocumentMoniker": "PdmSwPlugin.PDM\\PdmControl.xaml",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml",
+ "RelativeToolTip": "PdmSwPlugin.PDM\\PdmControl.xaml",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
- "WhenOpened": "2024-09-04T02:32:36.605Z",
+ "WhenOpened": "2024-10-09T03:30:57.686Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
- "Title": "CustomRichBox.xaml.cs",
- "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\CustomRictBox\\CustomRichBox.xaml.cs",
- "RelativeDocumentMoniker": "CustomRictBox\\CustomRichBox.xaml.cs",
- "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\CustomRictBox\\CustomRichBox.xaml.cs",
- "RelativeToolTip": "CustomRictBox\\CustomRichBox.xaml.cs",
- "ViewState": "AgIAAMgBAAAAAAAAAAAuwBACAAAxAAAAAAAAAA==",
+ "Title": "DrawApprove.xaml.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
+ "RelativeDocumentMoniker": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
+ "RelativeToolTip": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
+ "ViewState": "AgIAAAYCAAAAAAAAAAAkwCICAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-09-04T02:27:06.101Z",
+ "WhenOpened": "2024-10-09T03:22:18.864Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 7,
+ "Title": "log4net.config",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\log4net.config",
+ "RelativeDocumentMoniker": "PdmSw\\log4net.config",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\log4net.config",
+ "RelativeToolTip": "PdmSw\\log4net.config",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAQAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|",
+ "WhenOpened": "2024-09-26T10:24:04.161Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 4,
+ "Title": "SwAddin.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\SwAddin.cs",
+ "RelativeDocumentMoniker": "PdmSw\\SwAddin.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\SwAddin.cs",
+ "RelativeToolTip": "PdmSw\\SwAddin.cs",
+ "ViewState": "AgIAACIAAAAAAAAAAAA5wCkAAAAvAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-09-26T08:51:00.927Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 6,
+ "Title": "BaseAttacher.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\EventHandler\\BaseAttacher.cs",
+ "RelativeDocumentMoniker": "PdmSwPlugin.Main\\EventHandler\\BaseAttacher.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\EventHandler\\BaseAttacher.cs",
+ "RelativeToolTip": "PdmSwPlugin.Main\\EventHandler\\BaseAttacher.cs",
+ "ViewState": "AgIAAKoAAAAAAAAAAAA0wMcAAAApAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-09-25T09:56:45.504Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 5,
+ "Title": "MainControl.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
+ "RelativeDocumentMoniker": "PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
+ "RelativeToolTip": "PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
+ "ViewState": "AgIAAIwAAAAAAAAAAAA+wOQAAABDAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-09-25T09:54:37.505Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 3,
+ "Title": "PdmControl.xaml.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml.cs",
+ "RelativeDocumentMoniker": "PdmSwPlugin.PDM\\PdmControl.xaml.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml.cs",
+ "RelativeToolTip": "PdmSwPlugin.PDM\\PdmControl.xaml.cs",
+ "ViewState": "AgIAAM0EAAAAAAAAAAAAAOEEAAAvAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-09-25T06:09:00.747Z",
"EditorCaption": ""
}
]
diff --git a/.vs/SwPlugin/v17/DocumentLayout.json b/.vs/SwPlugin/v17/DocumentLayout.json
index 12581a9..145e413 100644
--- a/.vs/SwPlugin/v17/DocumentLayout.json
+++ b/.vs/SwPlugin/v17/DocumentLayout.json
@@ -3,20 +3,24 @@
"WorkspaceRootPath": "D:\\Workspace\\PdmSwPlugin2\\",
"Documents": [
{
- "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.main\\constant\\pluginconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\constant\\pluginconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ "AbsoluteMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.pdm\\pdmcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|solutionrelative:pdmswplugin.pdm\\pdmcontrol.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{44BCE7B9-F984-426B-9997-FC1FB1A49CC0}|CustomRictBox\\PdmSwPlugin.UI.csproj|d:\\workspace\\pdmswplugin2\\customrictbox\\customrichbox.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{44BCE7B9-F984-426B-9997-FC1FB1A49CC0}|CustomRictBox\\PdmSwPlugin.UI.csproj|solutionrelative:customrictbox\\customrichbox.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ "AbsoluteMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.pdm\\pdmcontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
+ "RelativeMoniker": "D:0:0:{1033FBD8-8700-4CD0-808A-BB97DB057A6B}|PdmSwPlugin.PDM\\PdmSwPlugin.PDM.csproj|solutionrelative:pdmswplugin.pdm\\pdmcontrol.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
},
{
- "AbsoluteMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.drawapprove\\drawapprove.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{BE239D32-7253-4D19-8793-159E98545B55}|PdmSwPlugin.DrawApprove\\PdmSwPlugin.DrawApprove.csproj|solutionrelative:pdmswplugin.drawapprove\\drawapprove.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ "AbsoluteMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|d:\\workspace\\pdmswplugin2\\pdmsw\\swaddin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{7ACEDAA9-2DE8-4485-837A-E7D58812A6DC}|PdmSw\\PdmSw.csproj|solutionrelative:pdmsw\\swaddin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{44BCE7B9-F984-426B-9997-FC1FB1A49CC0}|CustomRictBox\\PdmSwPlugin.UI.csproj|d:\\workspace\\pdmswplugin2\\customrictbox\\customrichbox.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
- "RelativeMoniker": "D:0:0:{44BCE7B9-F984-426B-9997-FC1FB1A49CC0}|CustomRictBox\\PdmSwPlugin.UI.csproj|solutionrelative:customrictbox\\customrichbox.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
+ "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.main\\swaddin\\maincontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\swaddin\\maincontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|d:\\workspace\\pdmswplugin2\\pdmswplugin.main\\eventhandler\\baseattacher.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{6E609A8C-583B-4607-A510-FA84218C4A31}|PdmSwPlugin.Main\\PdmSwPlugin.Main.csproj|solutionrelative:pdmswplugin.main\\eventhandler\\baseattacher.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@@ -26,57 +30,70 @@
"DocumentGroups": [
{
"DockedWidth": 200,
- "SelectedChildIndex": 0,
+ "SelectedChildIndex": 4,
"Children": [
{
"$type": "Document",
- "DocumentIndex": 0,
- "Title": "PluginConst.cs",
- "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\Constant\\PluginConst.cs",
- "RelativeDocumentMoniker": "PdmSwPlugin.Main\\Constant\\PluginConst.cs",
- "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\Constant\\PluginConst.cs",
- "RelativeToolTip": "PdmSwPlugin.Main\\Constant\\PluginConst.cs",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAA==",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-09-04T04:59:17.992Z",
+ "DocumentIndex": 1,
+ "Title": "PdmControl.xaml",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml",
+ "RelativeDocumentMoniker": "PdmSwPlugin.PDM\\PdmControl.xaml",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml",
+ "RelativeToolTip": "PdmSwPlugin.PDM\\PdmControl.xaml",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
+ "WhenOpened": "2024-10-09T03:30:57.686Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
- "Title": "DrawApprove.xaml.cs",
- "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
- "RelativeDocumentMoniker": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
- "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
- "RelativeToolTip": "PdmSwPlugin.DrawApprove\\DrawApprove.xaml.cs",
- "ViewState": "AgIAAIcBAAAAAAAAAAAcwJYBAAANAAAAAAAAAA==",
+ "Title": "SwAddin.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\SwAddin.cs",
+ "RelativeDocumentMoniker": "PdmSw\\SwAddin.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSw\\SwAddin.cs",
+ "RelativeToolTip": "PdmSw\\SwAddin.cs",
+ "ViewState": "AgIAACIAAAAAAAAAAAA5wCkAAAAvAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-09-04T04:19:25.271Z",
+ "WhenOpened": "2024-09-26T08:51:00.927Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 4,
+ "Title": "BaseAttacher.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\EventHandler\\BaseAttacher.cs",
+ "RelativeDocumentMoniker": "PdmSwPlugin.Main\\EventHandler\\BaseAttacher.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\EventHandler\\BaseAttacher.cs",
+ "RelativeToolTip": "PdmSwPlugin.Main\\EventHandler\\BaseAttacher.cs",
+ "ViewState": "AgIAAKoAAAAAAAAAAAA0wMcAAAApAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-09-25T09:56:45.504Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
- "Title": "CustomRichBox.xaml",
- "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\CustomRictBox\\CustomRichBox.xaml",
- "RelativeDocumentMoniker": "CustomRictBox\\CustomRichBox.xaml",
- "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\CustomRictBox\\CustomRichBox.xaml",
- "RelativeToolTip": "CustomRictBox\\CustomRichBox.xaml",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
- "WhenOpened": "2024-09-04T02:32:36.605Z",
+ "Title": "MainControl.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
+ "RelativeDocumentMoniker": "PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
+ "RelativeToolTip": "PdmSwPlugin.Main\\SwAddIn\\MainControl.cs",
+ "ViewState": "AgIAAIwAAAAAAAAAAAA+wOQAAABDAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-09-25T09:54:37.505Z",
"EditorCaption": ""
},
{
"$type": "Document",
- "DocumentIndex": 1,
- "Title": "CustomRichBox.xaml.cs",
- "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\CustomRictBox\\CustomRichBox.xaml.cs",
- "RelativeDocumentMoniker": "CustomRictBox\\CustomRichBox.xaml.cs",
- "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\CustomRictBox\\CustomRichBox.xaml.cs",
- "RelativeToolTip": "CustomRictBox\\CustomRichBox.xaml.cs",
- "ViewState": "AgIAAMgBAAAAAAAAAAAuwM4BAABAAAAAAAAAAA==",
+ "DocumentIndex": 0,
+ "Title": "PdmControl.xaml.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml.cs",
+ "RelativeDocumentMoniker": "PdmSwPlugin.PDM\\PdmControl.xaml.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.PDM\\PdmControl.xaml.cs",
+ "RelativeToolTip": "PdmSwPlugin.PDM\\PdmControl.xaml.cs",
+ "ViewState": "AgIAANAEAAAAAAAAAAAAAOIEAAAZAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-09-04T02:27:06.101Z",
+ "WhenOpened": "2024-09-25T06:09:00.747Z",
"EditorCaption": ""
}
]
diff --git a/AutoUpdater/AutoUpdater.csproj b/AutoUpdater/AutoUpdater.csproj
index ecd5986..bf185f3 100644
--- a/AutoUpdater/AutoUpdater.csproj
+++ b/AutoUpdater/AutoUpdater.csproj
@@ -41,7 +41,7 @@
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
- <OutputPath>bin\x64\Debug\</OutputPath>
+ <OutputPath>..\PdmSw\bin\x64\Debug\AutoUpdater\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
diff --git a/AutoUpdater/MainWindow.xaml.cs b/AutoUpdater/MainWindow.xaml.cs
index 90225ce..76d46fa 100644
--- a/AutoUpdater/MainWindow.xaml.cs
+++ b/AutoUpdater/MainWindow.xaml.cs
@@ -7,6 +7,7 @@
using System.Diagnostics;
using System.IO;
using System.Reflection;
+using System.Runtime.InteropServices;
using System.Threading;
using System.Windows;
using VersionControl;
@@ -91,6 +92,58 @@
GetCurrentVersion();
// 妫�鏌ユ彃浠剁殑鏇存柊
CheckPluginUpdate();
+ }
+ }
+
+ public void KillProcessByFullPath(string exePath)
+ {
+ string exeName = Path.GetFileNameWithoutExtension(exePath);
+ Process[] ps = Process.GetProcessesByName(exeName);
+ if (ps.Length > 0)
+ {
+ foreach (Process p in ps)
+ {
+ if (new Uri(p.MainModule.FileName) == new Uri(exePath))
+ {
+ p.Kill();
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 缁堟涓や釜Listener鐩稿叧杩涚▼
+ /// </summary>
+ public void KillListenerProcess()
+ {
+ string dir = Path.GetDirectoryName(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
+ string path1 = Path.Combine(dir, "Listener", "SolidWorksListener.exe");
+ string path2 = Path.Combine(dir, "Alert.exe");
+ KillProcessByFullPath(path1);
+ // 鏆傚仠涓�绉掍笉鐒禔lertKill涓嶆帀
+ Thread.Sleep(1000);
+ KillProcessByFullPath(path2);
+ }
+
+ /// <summary>
+ /// 鍚姩Listener鐩稿叧杩涚▼
+ /// </summary>
+ public void StartListenerProcess()
+ {
+ string dir = Path.GetDirectoryName(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
+ string path1 = Path.Combine(dir, "Listener", "SolidWorksListener.exe");
+ if (File.Exists(path1))
+ {
+ ProcessStartInfo info = new ProcessStartInfo
+ {
+ FileName = path1,
+ WorkingDirectory = Path.GetDirectoryName(path1)
+ };
+
+ new Process
+ {
+ StartInfo = info
+ }.Start();
}
}
@@ -235,6 +288,11 @@
label.Content = "涓嬭浇瀹屾垚锛岃В鍘嬩腑锛岃鍕垮叧闂▼搴�...";
// 涓存椂瑙e帇鐩綍锛岄槻姝㈣В鍘嬪嚭閿�
InitUnZipDir();
+ // kill鎺夌洃鍚▼搴忥紝閬垮厤鏂囦欢鍗犵敤
+ KillListenerProcess();
+ // 绛夊緟涓�绉掗噴鏀緀xe鍗犵敤
+ Thread.Sleep(1000);
+
// 鎻掍欢鏂囦欢澶� 榛樿鍦� AutoUpdater.exe 鐨勪笂绾х洰褰曚腑
string pluginDir = new DirectoryInfo(TempDir).Parent.Parent.FullName;
using (ZipInputStream zipIn = new ZipInputStream(File.Open(localFilePath, FileMode.Open)))
@@ -274,6 +332,8 @@
private void DoFinished()
{
+ // 鍚姩鐩戝惉杩涚▼
+ StartListenerProcess();
label.Content = "鏇存柊瀹屾垚";
bar.IsIndeterminate = false;
if (SwAppPath != null)
diff --git a/CustomRictBox/PdmSwPlugin.UI.csproj b/CustomRictBox/PdmSwPlugin.UI.csproj
index fa7c74e..1115405 100644
--- a/CustomRictBox/PdmSwPlugin.UI.csproj
+++ b/CustomRictBox/PdmSwPlugin.UI.csproj
@@ -69,6 +69,9 @@
<Reference Include="PresentationFramework" />
</ItemGroup>
<ItemGroup>
+ <Compile Include="SB .xaml.cs">
+ <DependentUpon>SB .xaml</DependentUpon>
+ </Compile>
<Compile Include="Sb.cs" />
<Page Include="Resources\Icons.xaml">
<Generator>MSBuild:Compile</Generator>
@@ -84,6 +87,10 @@
<DependentUpon>CustomRichBox.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
+ <Page Include="SB .xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs">
diff --git a/CustomRictBox/SB .xaml b/CustomRictBox/SB .xaml
new file mode 100644
index 0000000..e74c60e
--- /dev/null
+++ b/CustomRictBox/SB .xaml
@@ -0,0 +1,19 @@
+锘�<UserControl x:Class="PdmSwPlugin.UI.SB"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:local="clr-namespace:PdmSwPlugin.UI"
+ mc:Ignorable="d"
+ d:DesignHeight="450" d:DesignWidth="800">
+ <ComboBox Text="{Binding SelectedText}" IsEditable="True" ItemsSource="{Binding Path=BookExs}">
+ <ComboBox.ItemTemplate>
+ <DataTemplate>
+ <StackPanel Orientation="Horizontal">
+ <CheckBox IsChecked="{Binding IsChecked}" />
+ <TextBlock Text="{Binding Book.Name}" />
+ </StackPanel>
+ </DataTemplate>
+ </ComboBox.ItemTemplate>
+ </ComboBox>
+</UserControl>
diff --git a/CustomRictBox/SB .xaml.cs b/CustomRictBox/SB .xaml.cs
new file mode 100644
index 0000000..632ec7c
--- /dev/null
+++ b/CustomRictBox/SB .xaml.cs
@@ -0,0 +1,104 @@
+锘縰sing System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Windows.Controls;
+
+namespace PdmSwPlugin.UI
+{
+ /// <summary>
+ /// SB.xaml 鐨勪氦浜掗�昏緫
+ /// </summary>
+ public partial class SB : UserControl, INotifyPropertyChanged
+ {
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName)
+ {
+ if (PropertyChanged != null)
+ {
+ PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+ }
+ }
+
+ public SB()
+ {
+ InitializeComponent();
+ }
+
+ private string _selectedText = string.Empty;
+
+ public string SelectedText
+ {
+ get
+ {
+ return _selectedText;
+ }
+ set
+ {
+ if (_selectedText != value)
+ {
+ _selectedText = value;
+ RaisePropertyChanged("SelectedText");
+ }
+ }
+ }
+
+ private ObservableCollection<INotifyPropertyChanged> _dataSource;
+
+ public ObservableCollection<INotifyPropertyChanged> DataSource
+ {
+ get
+ {
+ if (_dataSource == null)
+ {
+ _dataSource = new ObservableCollection<INotifyPropertyChanged>();
+
+ _dataSource.CollectionChanged += (sender, e) =>
+ {
+ if (e.OldItems != null)
+ {
+ foreach (INotifyPropertyChanged bookEx in e.OldItems)
+ {
+ bookEx.PropertyChanged -= ItemPropertyChanged;
+ }
+ }
+
+ if (e.NewItems != null)
+ {
+ foreach (INotifyPropertyChanged bookEx in e.NewItems)
+ {
+ bookEx.PropertyChanged += ItemPropertyChanged;
+ }
+ }
+ };
+ }
+
+ return _dataSource;
+ }
+ }
+
+ private void ItemPropertyChanged(object sender, PropertyChangedEventArgs e)
+ {
+ /*if (e.PropertyName == "IsChecked")
+ {
+ BookEx bookEx = sender as BookEx;
+
+ if (bookEx != null)
+ {
+ IEnumerable<BookEx> bookExs = BookExs.Where(b => b.IsChecked == true);
+
+ StringBuilder builder = new StringBuilder();
+
+ foreach (BookEx item in bookExs)
+ {
+ builder.Append(item.Book.Name + " ");
+ }
+
+ SelectedText = builder == null ? string.Empty : builder.ToString();
+ }
+ }*/
+ }
+ }
+}
\ No newline at end of file
diff --git a/InnoSetupScript/InnoSetupUtil.dll b/InnoSetupScript/InnoSetupUtil.dll
new file mode 100644
index 0000000..35b9bea
--- /dev/null
+++ b/InnoSetupScript/InnoSetupUtil.dll
Binary files differ
diff --git a/InnoSetupScript/PdmSwPlugin.iss b/InnoSetupScript/PdmSwPlugin.iss
index fce3816..1f3ea2a 100644
--- a/InnoSetupScript/PdmSwPlugin.iss
+++ b/InnoSetupScript/PdmSwPlugin.iss
@@ -3,16 +3,16 @@
; AppName
#define AppName = "PdmSwPlugin"
; 打包的应用文件夹路径
-#define AppDir = "C:\Workspace\PdmSwPlugin2\PdmSw\bin\x64\Release\"
+#define AppDir = "D:\Workspace\PdmSwPlugin2\PdmSw\bin\x64\Release\"
; 自动更新程序路径
-#define AutoUpdaterDir = "C:\Workspace\PdmSwPlugin2\PdmSw\bin\x64\Release\Release\AutoUpdater\"
+#define AutoUpdaterDir = "D:\Workspace\PdmSwPlugin2\PdmSw\bin\x64\Release\AutoUpdater\"
; 版本
-#define Version = "_0.0.0.40"
+#define Version = "_0.0.0.42"
; 生成的Installer存放路径
-#define OutPutDir = "Z:\Main\Workspace\Output"
+#define OutPutDir = "Z:\Output"
#define DllName = "PdmSwPlugin.dll"
-
+#define MyAppExeName "SolidWorksListener.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
@@ -35,12 +35,14 @@
WizardStyle=modern
PrivilegesRequired=admin
UsedUserAreasWarning=no
+AlwaysRestart=yes
[Languages]
Name: "chinesesimplified"; MessagesFile: "compiler:Languages\ChineseSimplified.isl"
-[Files]
+[Files]
Source: "{#AppDir}*"; DestDir: "{app}"; Excludes: "temp\*,Log\*"; Flags:recursesubdirs ignoreversion
+;Source: "InnoSetupUtil.dll"; DestDir: "{app}"
;Source: "{#AutoUpdaterDir}*"; DestDir: "{app}\AutoUpdater"; Excludes: "download\*"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
@@ -49,6 +51,7 @@
[Run]
Filename: {dotnet4064}\RegAsm.exe; Parameters: /codebase {#DllName}; WorkingDir: {app}; Flags: runhidden nowait skipifsilent;
+Filename: {app}\Listener\SolidWorksListener.exe; WorkingDir: {app}\Listener\; Flags: runhidden nowait skipifsilent;
[UninstallRun]
Filename: {dotnet4064}\RegAsm.exe; Parameters: /unregister {#DllName}; WorkingDir: {app}; RunOnceId: DelService; Flags: runhidden nowait;
@@ -68,11 +71,78 @@
Root: HKLM64; Subkey: "SOFTWARE\SolidWorks\Addins\{{{#AppId}}"; ValueType: dword; ValueName: ""; ValueData: 0; Flags: deletevalue
Root: HKLM64; Subkey: "SOFTWARE\SolidWorks\Addins\{{{#AppId}}"; ValueType: string; ValueName: "Description"; ValueData: "PDM插件"; Flags: deletevalue
Root: HKLM64; Subkey: "SOFTWARE\SolidWorks\Addins\{{{#AppId}}"; ValueType: string; ValueName: "Title"; ValueData: "PdmSw"; Flags: deletevalue
+; 监听器
+;Root: HKLM64; Subkey: "SYSTEM\CurrentControlSet\Services\SolidWorks Listener"; Flags: uninsdeletekey
+;Root: HKLM64; Subkey: "SYSTEM\CurrentControlSet\Services\SolidWorks Listener"; ValueType: string; ValueName: "DisplayName"; ValueData: "SolidWorks Listener"; Flags: deletevalue
+;Root: HKLM64; Subkey: "SYSTEM\CurrentControlSet\Services\SolidWorks Listener"; ValueType: string; ValueName: "ObjectName"; ValueData: "LocalSystem"; Flags: deletevalue
+;Root: HKLM64; Subkey: "SYSTEM\CurrentControlSet\Services\SolidWorks Listener"; ValueType: string; ValueName: "ImagePath"; ValueData: "{app}\Listener\PluginListener.exe"; Flags: deletevalue
+;Root: HKLM64; Subkey: "SYSTEM\CurrentControlSet\Services\SolidWorks Listener"; ValueType: dword; ValueName: "ErrorControl"; ValueData: 1; Flags: deletevalue
+;Root: HKLM64; Subkey: "SYSTEM\CurrentControlSet\Services\SolidWorks Listener"; ValueType: dword; ValueName: "Start"; ValueData: 2; Flags: deletevalue
+;Root: HKLM64; Subkey: "SYSTEM\CurrentControlSet\Services\SolidWorks Listener"; ValueType: dword; ValueName: "Type"; ValueData: 272; Flags: deletevalue
+
+; 监听器2.0
+Root: HKCU64; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "SolidWorksListener"; ValueData: """{app}\Listener\SolidWorksListener.exe"""; Flags: deletevalue uninsdeletevalue
+
[Icons]
Name: "{group}\{cm:UninstallProgram,Test}"; Filename: "{uninstallexe}"
[code]
+// 自定义函数,终止服务
+function CheckSoftRun(strExeName: String): Boolean;
+// 变量定义
+var ErrorCode: Integer;
+var bRes: Boolean;
+var cmdStr: String; // 命令
+begin
+ cmdStr := Format('/c net stop "%s"', [strExeName]);
+ if RegValueExists(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Services\SolidWorks Listener', 'ImagePath') then begin
+ // 终止服务
+ bRes := ShellExec('open', ExpandConstant('{cmd}'), cmdStr, '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
+ if bRes then begin
+ Result := true;
+ end else begin
+ MsgBox(ExpandConstant('{cm:checkSoftTip}'), mbCriticalError, MB_OKCANCEL);
+ Result := false;
+ Exit;
+ end;
+ end else begin
+ Result := true;
+ end;
+end;
+
+function CheckSoftRun3(): Boolean;
+var hWnd: Integer;
+var ResultCode: Integer;
+var exe1: String;
+var exe2: String;
+begin
+ // hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));
+ exe1 := Format('/c powershell "Get-Process|Where-Object{$_.Path -eq \"%s\"}|Stop-Process|pause"', [ExpandConstant('{autopf}\HengXin\PdmSwPlugin\Listener\SolidWorksListener.exe')]);
+ exe1 := '/c taskkill /f /t /im SolidWorksListener.exe';
+ exe2 := '/c taskkill /f /t /im Alert.exe';
+
+ ShellExec('open', ExpandConstant('{cmd}'), exe1, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
+ ShellExec('open', ExpandConstant('{cmd}'), exe2, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
+ Result:= true;
+end;
+
+// 开始页下一步时判断软件是否运行
+function NextButtonClick(CurPageID: Integer): Boolean;
+begin
+ if 1=CurPageID then begin
+ Result := CheckSoftRun3();
+ Exit;
+ end;
+ Result:= true;
+end;
+
+// 卸载时关闭软件
+function InitializeUninstall(): Boolean;
+begin
+ Result := CheckSoftRun3();
+end;
+
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usDone then
@@ -82,3 +152,7 @@
end;
+[CustomMessages]
+chinesesimplified.checkSoftTip=未能成功停止服务!
+
+
diff --git a/PdmAlert/.vs/PdmAlert/v17/DocumentLayout.backup.json b/PdmAlert/.vs/PdmAlert/v17/DocumentLayout.backup.json
new file mode 100644
index 0000000..dcbbd4a
--- /dev/null
+++ b/PdmAlert/.vs/PdmAlert/v17/DocumentLayout.backup.json
@@ -0,0 +1,102 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{00000000-0000-0000-0000-000000000000}|\u003CSolution\u003E|PdmAlert||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\app.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|solutionrelative:app.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\settings\\updatersetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
+ "RelativeMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|solutionrelative:settings\\updatersetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\settings\\toolsetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
+ "RelativeMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|solutionrelative:settings\\toolsetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\loginwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|solutionrelative:loginwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|d:\\workspace\\pdmswplugin2\\pdmalert\\||{B270807C-D8C6-49EB-8EBE-8E8D566637A1}|1e78f8db-6c07-4d61-a18f-7514010abd56"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": 0,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "PdmAlert",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\PdmAlert.csproj",
+ "RelativeDocumentMoniker": "PdmAlert.csproj",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\PdmAlert.csproj",
+ "RelativeToolTip": "PdmAlert.csproj",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
+ "WhenOpened": "2024-09-09T08:52:34.897Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 1,
+ "Title": "App.xaml.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\App.xaml.cs",
+ "RelativeDocumentMoniker": "App.xaml.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\App.xaml.cs",
+ "RelativeToolTip": "App.xaml.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAABAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-09-09T08:48:00.369Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 2,
+ "Title": "UpdaterSetting.xml",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\Settings\\UpdaterSetting.xml",
+ "RelativeDocumentMoniker": "Settings\\UpdaterSetting.xml",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\Settings\\UpdaterSetting.xml",
+ "RelativeToolTip": "Settings\\UpdaterSetting.xml",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003576|",
+ "WhenOpened": "2024-09-09T08:47:51.476Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 3,
+ "Title": "ToolSetting.xml",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\Settings\\ToolSetting.xml",
+ "RelativeDocumentMoniker": "Settings\\ToolSetting.xml",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\Settings\\ToolSetting.xml",
+ "RelativeToolTip": "Settings\\ToolSetting.xml",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003576|",
+ "WhenOpened": "2024-09-09T08:47:46.282Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 4,
+ "Title": "LoginWindow.xaml.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\LoginWindow.xaml.cs",
+ "RelativeDocumentMoniker": "LoginWindow.xaml.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\LoginWindow.xaml.cs",
+ "RelativeToolTip": "LoginWindow.xaml.cs",
+ "ViewState": "AgIAABMAAAAAAAAAAAAgwCUAAAAnAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-09-06T09:46:54.594Z"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/PdmAlert/.vs/PdmAlert/v17/DocumentLayout.json b/PdmAlert/.vs/PdmAlert/v17/DocumentLayout.json
index fc4749f..a4b100a 100644
--- a/PdmAlert/.vs/PdmAlert/v17/DocumentLayout.json
+++ b/PdmAlert/.vs/PdmAlert/v17/DocumentLayout.json
@@ -1,51 +1,28 @@
{
"Version": 1,
- "WorkspaceRootPath": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\",
+ "WorkspaceRootPath": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{00000000-0000-0000-0000-000000000000}|\u003CSolution\u003E|PdmAlert||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
},
{
- "AbsoluteMoniker": "D:0:0:{EDC73C56-D0C5-4AC9-B296-3253915EF933}|..\\..\\CommonUpdater\\VersionControl\\VersionControl.csproj|c:\\main\\workspace\\visualstudio\\commonupdater\\versioncontrol\\util.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{11C62041-5E6E-4230-A5E8-4246C033BA67}|..\\..\\CommonUpdater\\AutoUpdater\\AutoUpdater.csproj|c:\\main\\workspace\\visualstudio\\commonupdater\\autoupdater\\settings\\updatersetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|c:\\main\\workspace\\visualstudio\\pdmswplugin2\\pdmalert\\settings\\updatersetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
- "RelativeMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|solutionrelative:settings\\updatersetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{11C62041-5E6E-4230-A5E8-4246C033BA67}|..\\..\\CommonUpdater\\AutoUpdater\\AutoUpdater.csproj|c:\\main\\workspace\\visualstudio\\commonupdater\\autoupdater\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{11C62041-5E6E-4230-A5E8-4246C033BA67}|..\\..\\CommonUpdater\\AutoUpdater\\AutoUpdater.csproj|c:\\main\\workspace\\visualstudio\\commonupdater\\autoupdater\\util.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|c:\\main\\workspace\\visualstudio\\pdmswplugin2\\pdmalert\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
- "RelativeMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|solutionrelative:mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|c:\\main\\workspace\\visualstudio\\pdmswplugin2\\pdmalert\\app.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\app.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|solutionrelative:app.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{EDC73C56-D0C5-4AC9-B296-3253915EF933}|..\\..\\CommonUpdater\\VersionControl\\VersionControl.csproj|c:\\main\\workspace\\visualstudio\\commonupdater\\versioncontrol\\versionutil.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\settings\\updatersetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
+ "RelativeMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|solutionrelative:settings\\updatersetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
- "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|c:\\main\\workspace\\visualstudio\\pdmswplugin2\\pdmalert\\loginwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\settings\\toolsetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
+ "RelativeMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|solutionrelative:settings\\toolsetting.xml||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\loginwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|solutionrelative:loginwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
- "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|c:\\main\\workspace\\visualstudio\\pdmswplugin2\\pdmalert\\mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
- "RelativeMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|solutionrelative:mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|c:\\main\\workspace\\visualstudio\\pdmswplugin2\\pdmalert\\loginwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
- "RelativeMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|solutionrelative:loginwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
- },
- {
- "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|c:\\main\\workspace\\visualstudio\\pdmswplugin2\\pdmalert\\||{B270807C-D8C6-49EB-8EBE-8E8D566637A1}|1e78f8db-6c07-4d61-a18f-7514010abd56"
+ "AbsoluteMoniker": "D:0:0:{FC7FBDE7-D0D2-4E79-A586-501ABC73FE46}|PdmAlert.csproj|d:\\workspace\\pdmswplugin2\\pdmalert\\||{B270807C-D8C6-49EB-8EBE-8E8D566637A1}|1e78f8db-6c07-4d61-a18f-7514010abd56"
}
],
"DocumentGroupContainers": [
@@ -61,154 +38,62 @@
"$type": "Document",
"DocumentIndex": 0,
"Title": "PdmAlert",
- "DocumentMoniker": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\PdmAlert.csproj",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\PdmAlert.csproj",
"RelativeDocumentMoniker": "PdmAlert.csproj",
- "ToolTip": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\PdmAlert.csproj",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\PdmAlert.csproj",
"RelativeToolTip": "PdmAlert.csproj",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
- "WhenOpened": "2024-08-22T13:00:12.272Z",
+ "WhenOpened": "2024-09-09T08:52:34.897Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
- "Title": "Util.cs",
- "DocumentMoniker": "C:\\Main\\Workspace\\VisualStudio\\CommonUpdater\\VersionControl\\Util.cs",
- "RelativeDocumentMoniker": "..\\..\\CommonUpdater\\VersionControl\\Util.cs",
- "ToolTip": "C:\\Main\\Workspace\\VisualStudio\\CommonUpdater\\VersionControl\\Util.cs",
- "RelativeToolTip": "..\\..\\CommonUpdater\\VersionControl\\Util.cs",
- "ViewState": "AQIAAIMBAAAAAAAAAAAgwKcBAAANAAAA",
+ "Title": "App.xaml.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\App.xaml.cs",
+ "RelativeDocumentMoniker": "App.xaml.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\App.xaml.cs",
+ "RelativeToolTip": "App.xaml.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAABAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-08-22T12:56:26.502Z",
+ "WhenOpened": "2024-09-09T08:48:00.369Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "UpdaterSetting.xml",
- "DocumentMoniker": "C:\\Main\\Workspace\\VisualStudio\\CommonUpdater\\AutoUpdater\\Settings\\UpdaterSetting.xml",
- "RelativeDocumentMoniker": "..\\..\\CommonUpdater\\AutoUpdater\\Settings\\UpdaterSetting.xml",
- "ToolTip": "C:\\Main\\Workspace\\VisualStudio\\CommonUpdater\\AutoUpdater\\Settings\\UpdaterSetting.xml",
- "RelativeToolTip": "..\\..\\CommonUpdater\\AutoUpdater\\Settings\\UpdaterSetting.xml",
- "ViewState": "AQIAAAAAAAAAAAAAAAAAAA8AAAARAAAA",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\Settings\\UpdaterSetting.xml",
+ "RelativeDocumentMoniker": "Settings\\UpdaterSetting.xml",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\Settings\\UpdaterSetting.xml",
+ "RelativeToolTip": "Settings\\UpdaterSetting.xml",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003576|",
- "WhenOpened": "2024-08-22T12:57:06.965Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-09-09T08:47:51.476Z"
},
{
"$type": "Document",
"DocumentIndex": 3,
- "Title": "UpdaterSetting.xml",
- "DocumentMoniker": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\Settings\\UpdaterSetting.xml",
- "RelativeDocumentMoniker": "Settings\\UpdaterSetting.xml",
- "ToolTip": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\Settings\\UpdaterSetting.xml",
- "RelativeToolTip": "Settings\\UpdaterSetting.xml",
- "ViewState": "AQIAAAAAAAAAAAAAAAAAAAcAAAARAAAA",
+ "Title": "ToolSetting.xml",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\Settings\\ToolSetting.xml",
+ "RelativeDocumentMoniker": "Settings\\ToolSetting.xml",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\Settings\\ToolSetting.xml",
+ "RelativeToolTip": "Settings\\ToolSetting.xml",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003576|",
- "WhenOpened": "2024-08-22T11:46:07.203Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-09-09T08:47:46.282Z"
},
{
"$type": "Document",
"DocumentIndex": 4,
- "Title": "MainWindow.xaml.cs",
- "DocumentMoniker": "C:\\Main\\Workspace\\VisualStudio\\CommonUpdater\\AutoUpdater\\MainWindow.xaml.cs",
- "RelativeDocumentMoniker": "..\\..\\CommonUpdater\\AutoUpdater\\MainWindow.xaml.cs",
- "ToolTip": "C:\\Main\\Workspace\\VisualStudio\\CommonUpdater\\AutoUpdater\\MainWindow.xaml.cs",
- "RelativeToolTip": "..\\..\\CommonUpdater\\AutoUpdater\\MainWindow.xaml.cs",
- "ViewState": "AQIAAKsAAAAAAAAAAAD4v7sAAAA8AAAA",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-08-22T11:42:13.882Z",
- "EditorCaption": ""
- },
- {
- "$type": "Document",
- "DocumentIndex": 11,
- "Title": "LoginWindow.xaml",
- "DocumentMoniker": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\LoginWindow.xaml",
- "RelativeDocumentMoniker": "LoginWindow.xaml",
- "ToolTip": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\LoginWindow.xaml",
- "RelativeToolTip": "LoginWindow.xaml",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
- "WhenOpened": "2024-08-22T11:41:42.779Z",
- "EditorCaption": ""
- },
- {
- "$type": "Document",
- "DocumentIndex": 9,
"Title": "LoginWindow.xaml.cs",
- "DocumentMoniker": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\LoginWindow.xaml.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\LoginWindow.xaml.cs",
"RelativeDocumentMoniker": "LoginWindow.xaml.cs",
- "ToolTip": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\LoginWindow.xaml.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PdmAlert\\LoginWindow.xaml.cs",
"RelativeToolTip": "LoginWindow.xaml.cs",
- "ViewState": "AQIAAAAAAAAAAAAAAAAAAAkAAAASAAAA",
+ "ViewState": "AgIAABMAAAAAAAAAAAAgwCUAAAAnAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-08-22T11:38:26.763Z",
- "EditorCaption": ""
- },
- {
- "$type": "Document",
- "DocumentIndex": 5,
- "Title": "Util.cs",
- "DocumentMoniker": "C:\\Main\\Workspace\\VisualStudio\\CommonUpdater\\AutoUpdater\\Util.cs",
- "RelativeDocumentMoniker": "..\\..\\CommonUpdater\\AutoUpdater\\Util.cs",
- "ToolTip": "C:\\Main\\Workspace\\VisualStudio\\CommonUpdater\\AutoUpdater\\Util.cs",
- "RelativeToolTip": "..\\..\\CommonUpdater\\AutoUpdater\\Util.cs",
- "ViewState": "AQIAAGoAAAAAAAAAAAAkwKAAAAAFAAAA",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-08-22T11:14:30.598Z",
- "EditorCaption": ""
- },
- {
- "$type": "Document",
- "DocumentIndex": 8,
- "Title": "VersionUtil.cs",
- "DocumentMoniker": "C:\\Main\\Workspace\\VisualStudio\\CommonUpdater\\VersionControl\\VersionUtil.cs",
- "RelativeDocumentMoniker": "..\\..\\CommonUpdater\\VersionControl\\VersionUtil.cs",
- "ToolTip": "C:\\Main\\Workspace\\VisualStudio\\CommonUpdater\\VersionControl\\VersionUtil.cs",
- "RelativeToolTip": "..\\..\\CommonUpdater\\VersionControl\\VersionUtil.cs",
- "ViewState": "AQIAAGwAAAAAAAAAAAAAAAgAAAAjAAAA",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-08-22T10:35:18.104Z",
- "EditorCaption": ""
- },
- {
- "$type": "Document",
- "DocumentIndex": 6,
- "Title": "MainWindow.xaml.cs",
- "DocumentMoniker": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\MainWindow.xaml.cs",
- "RelativeDocumentMoniker": "MainWindow.xaml.cs",
- "ToolTip": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\MainWindow.xaml.cs",
- "RelativeToolTip": "MainWindow.xaml.cs",
- "ViewState": "AQIAAMMAAAAAAAAAAAAnwNcAAAAJAAAA",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-08-22T10:31:21.777Z",
- "EditorCaption": ""
- },
- {
- "$type": "Document",
- "DocumentIndex": 10,
- "Title": "MainWindow.xaml",
- "DocumentMoniker": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\MainWindow.xaml",
- "RelativeDocumentMoniker": "MainWindow.xaml",
- "ToolTip": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\MainWindow.xaml",
- "RelativeToolTip": "MainWindow.xaml",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
- "WhenOpened": "2024-08-22T10:31:19.726Z",
- "EditorCaption": ""
- },
- {
- "$type": "Document",
- "DocumentIndex": 7,
- "Title": "App.xaml.cs",
- "DocumentMoniker": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\App.xaml.cs",
- "RelativeDocumentMoniker": "App.xaml.cs",
- "ToolTip": "C:\\Main\\Workspace\\VisualStudio\\PdmSwPlugin2\\PdmAlert\\App.xaml.cs",
- "RelativeToolTip": "App.xaml.cs",
- "ViewState": "AQIAAGwAAAAAAAAAAAAywHIAAAANAAAA",
- "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2024-08-22T10:29:45.832Z",
- "EditorCaption": ""
+ "WhenOpened": "2024-09-06T09:46:54.594Z"
}
]
}
diff --git a/PdmAlert/PdmAlert.csproj b/PdmAlert/PdmAlert.csproj
index 924b67b..2351bde 100644
--- a/PdmAlert/PdmAlert.csproj
+++ b/PdmAlert/PdmAlert.csproj
@@ -179,7 +179,7 @@
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
- <PostBuildEvent>xcopy "C:\Main\Workspace\VisualStudio\CommonUpdater\AutoUpdater\bin\x64\$(ConfigurationName)\" "$(TargetDir)AutoUpdater\" /S /Y
+ <PostBuildEvent>xcopy "D:\Workspace\CommonUpdater\AutoUpdater\bin\x64\$(ConfigurationName)\" "$(TargetDir)AutoUpdater\" /S /Y
IF "$(ConfigurationName)"=="Release" GOTO PRE
GOTO END
@@ -189,7 +189,7 @@
GOTO END
:END
-xcopy "$(TargetDir)Settings\UpdaterSetting.xml" "$(TargetDir)AutoUpdater\Settings\UpdaterSetting.xml" /Y
+echo f| xcopy "$(TargetDir)Settings\UpdaterSetting.xml" "$(TargetDir)AutoUpdater\Settings\UpdaterSetting.xml" /E /Y
</PostBuildEvent>
</PropertyGroup>
diff --git a/PdmSw/PdmSw.csproj b/PdmSw/PdmSw.csproj
index 6d1429b..8db5a2e 100644
--- a/PdmSw/PdmSw.csproj
+++ b/PdmSw/PdmSw.csproj
@@ -163,6 +163,20 @@
<Private>True</Private>
<EmbedInteropTypes>False</EmbedInteropTypes>
</Reference>
+ <Reference Include="SuperSocket.Common, Version=1.6.6.1, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\lib\SuperSocket.Common.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.Facility">
+ <HintPath>..\lib\SuperSocket.Facility.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.SocketBase, Version=1.6.6.1, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\lib\SuperSocket.SocketBase.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.SocketEngine">
+ <HintPath>..\lib\SuperSocket.SocketEngine.dll</HintPath>
+ </Reference>
<Reference Include="System">
<Name>System</Name>
<EmbedInteropTypes>False</EmbedInteropTypes>
diff --git a/PdmSw/SwAddin.cs b/PdmSw/SwAddin.cs
index d563d60..f9f530b 100644
--- a/PdmSw/SwAddin.cs
+++ b/PdmSw/SwAddin.cs
@@ -1,6 +1,7 @@
using log4net;
using log4net.Appender;
using log4net.Config;
+using log4net.Core;
using PdmSwPlugin.Common;
using PdmSwPlugin.Common.Setting;
using PdmSwPlugin.Main;
@@ -33,7 +34,6 @@
{
static SwAddin()
{
-
// AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
// AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += CurrentDomain_AssemblyResolve;
/// 设置log4net配置
@@ -329,6 +329,7 @@
{
RemoveCommandMgr();
RemovePMP();
+ mainControl.StopTcpServer();
attacher.DetachEventHandlers();
attacher = null;
diff --git a/PdmSw/log4net.config b/PdmSw/log4net.config
index c372f4c..516b83f 100644
--- a/PdmSw/log4net.config
+++ b/PdmSw/log4net.config
@@ -1,37 +1,38 @@
锘�<?xml version="1.0" encoding="utf-8"?>
<log4net>
- <!-- 鎺у埗鍙版棩蹇楅厤缃� -->
- <appender name="Console" type="log4net.Appender.ConsoleAppender">
- <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
- </layout>
- </appender>
+ <!-- 鎺у埗鍙版棩蹇楅厤缃� -->
+ <appender name="Console" type="log4net.Appender.ConsoleAppender">
+ <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
+ <layout type="log4net.Layout.PatternLayout">
+ <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
+ </layout>
+ </appender>
- <!-- 鏂囦欢瀛樺偍鏃ュ織閰嶇疆 -->
- <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
- <!-- 淇濆瓨鏂囦欢鐨勫悕绉� -->
- <file value="${SwPluginPath}/Log/" />
- <appendToFile value="true" />
- <rollingStyle value="Date" />
- <datePattern value="'log_'yyyyMMdd'.log'"/>
- <staticLogFileName value="false"/>
+ <!-- 鏂囦欢瀛樺偍鏃ュ織閰嶇疆 -->
+ <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
+ <!-- 淇濆瓨鏂囦欢鐨勫悕绉� -->
+ <file value="./Log/" />
+ <appendToFile value="true" />
+ <rollingStyle value="Date" />
+ <datePattern value="'log_'yyyyMMdd'.log'"/>
+ <staticLogFileName value="false"/>
+ <!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->
- <!-- 鏂囦欢鐨勭紪鐮佹柟寮� -->
- <param name="Encoding" value="UTF-8"/>
- <!-- 姣忎釜鏂囦欢鐨勫ぇ灏� -->
- <maximumFileSize value="100KB" />
- <!-- 淇濆瓨鏂囦欢鏁伴噺 -->
- <maxSizeRollBackups value="2" />
- <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date{ISO8601} [%logger] %level %class - %message%newline" />
- </layout>
- </appender>
+ <!-- 鏂囦欢鐨勭紪鐮佹柟寮� -->
+ <param name="Encoding" value="UTF-8"/>
+ <!-- 姣忎釜鏂囦欢鐨勫ぇ灏� -->
+ <maximumFileSize value="100KB" />
+ <!-- 淇濆瓨鏂囦欢鏁伴噺 -->
+ <maxSizeRollBackups value="2" />
+ <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
+ <layout type="log4net.Layout.PatternLayout">
+ <conversionPattern value="%date{ISO8601} [%logger] [%thread] %level %class - %message%newline" />
+ </layout>
+ </appender>
- <root>
- <level value="INFO" />
- <appender-ref ref="Console" />
- <appender-ref ref="RollingFile" />
- </root>
+ <root>
+ <level value="INFO" />
+ <appender-ref ref="Console" />
+ <appender-ref ref="RollingFile" />
+ </root>
</log4net>
\ No newline at end of file
diff --git a/PdmSwPlugin.Common/.vs/PdmSwPlugin.Common.csproj.dtbcache.json b/PdmSwPlugin.Common/.vs/PdmSwPlugin.Common.csproj.dtbcache.json
index ca25088..4d31cfe 100644
--- a/PdmSwPlugin.Common/.vs/PdmSwPlugin.Common.csproj.dtbcache.json
+++ b/PdmSwPlugin.Common/.vs/PdmSwPlugin.Common.csproj.dtbcache.json
@@ -1 +1 @@
-{"RootPath":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common","ProjectFileName":"PdmSwPlugin.Common.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"Attribute\\PdmSwPlugin.cs"},{"SourceFile":"BomIniter\\NameUtil.cs"},{"SourceFile":"BomIniter\\YwtBomIniter.cs"},{"SourceFile":"ClassLoader.cs"},{"SourceFile":"Constants\\PriceCheckName.cs"},{"SourceFile":"Constants\\PropertyName.cs"},{"SourceFile":"Constants\\Settings.cs"},{"SourceFile":"Control\\RichHisWindow.xaml.cs"},{"SourceFile":"Control\\TreeGrid\\Controls\\TreeDataGrid.cs"},{"SourceFile":"Control\\TreeGrid\\Controls\\TreeGrid.cs"},{"SourceFile":"Control\\TreeGrid\\Controls\\TreeItemContentControl.cs"},{"SourceFile":"Control\\TreeGrid\\Controls\\TreeItemData.cs"},{"SourceFile":"Entity\\BusinessType.cs"},{"SourceFile":"Entity\\DrawAudit\\DrawAudit.cs"},{"SourceFile":"Entity\\DrawAudit\\DrawAuditHis.cs"},{"SourceFile":"Entity\\DrawAudit\\DrawAuditOrder.cs"},{"SourceFile":"Entity\\NoteAndPos.cs"},{"SourceFile":"Entity\\NotifyBase.cs"},{"SourceFile":"Entity\\Page.cs"},{"SourceFile":"Entity\\PartSpec.cs"},{"SourceFile":"Entity\\PdmPart.cs"},{"SourceFile":"BomIniter\\BomIniter.cs"},{"SourceFile":"BomIniter\\BomIniterHolder.cs"},{"SourceFile":"BomIniter\\LHJBomIniter.cs"},{"SourceFile":"Interface\\IContectSelectionChangeHandler.cs"},{"SourceFile":"Interface\\IContextHandler.cs"},{"SourceFile":"Setting\\PluginSetting.cs"},{"SourceFile":"Entity\\Pdm\\PdmBom.cs"},{"SourceFile":"Entity\\PluginInfo.cs"},{"SourceFile":"Entity\\PropertyInfo_2D.cs"},{"SourceFile":"Entity\\SldComponentInfo_DM.cs"},{"SourceFile":"Entity\\System\\PdmUser.cs"},{"SourceFile":"Event\\Events.cs"},{"SourceFile":"Exception\\PdmException.cs"},{"SourceFile":"Interface\\Base\\ActiveDocChangeHandlerBase.cs"},{"SourceFile":"Interface\\IActiveDocChangeHandler.cs"},{"SourceFile":"Interface\\ISwAppSetter.cs"},{"SourceFile":"properties\\AssemblyInfo.cs"},{"SourceFile":"Setting\\CustomerSetting.cs"},{"SourceFile":"Setting\\YwtUserSetting.cs"},{"SourceFile":"Util\\DictionaryUtil.cs"},{"SourceFile":"Util\\LimitedConcurrencyLevelTaskScheduler.cs"},{"SourceFile":"Util\\NumberUtil.cs"},{"SourceFile":"Util\\OpenDocContext.cs"},{"SourceFile":"Util\\Pdm\\ComponentAndTask.cs"},{"SourceFile":"Util\\Pdm\\BomTreeReader.cs"},{"SourceFile":"Util\\Permission\\PermissionUtil.cs"},{"SourceFile":"Util\\SwDMUtil.cs"},{"SourceFile":"Util\\UI\\MaskAdorner.cs"},{"SourceFile":"Util\\Common\\BeanUtil.cs"},{"SourceFile":"Util\\Common\\MsgBoxHelper.cs"},{"SourceFile":"Util\\CustomPropertyUtil.cs"},{"SourceFile":"Util\\DMSldFileExtentionChecker.cs"},{"SourceFile":"Util\\CustomerPropertiesWrapper.cs"},{"SourceFile":"Util\\Common\\DocUtil.cs"},{"SourceFile":"Util\\EngineeringDrawingFile.cs"},{"SourceFile":"Util\\EngineeringDrawingPropertiesClass.cs"},{"SourceFile":"Util\\FileExtentionChecker.cs"},{"SourceFile":"Util\\Common\\FileUtil.cs"},{"SourceFile":"Util\\GetDocumentPropertiesViaDM.cs"},{"SourceFile":"Util\\Http\\GlobalExceptionHandler.cs"},{"SourceFile":"Util\\Http\\HttpClientCreator.cs"},{"SourceFile":"Util\\Http\\HttpUtil.cs"},{"SourceFile":"Util\\Http\\Result.cs"},{"SourceFile":"Util\\Common\\JsonUtil.cs"},{"SourceFile":"Util\\Common\\MD5Util.cs"},{"SourceFile":"Util\\Pdm\\ModelUtil.cs"},{"SourceFile":"Util\\UI\\MultiExWindow.xaml.cs"},{"SourceFile":"Util\\WindowIntPtrUtil.cs"},{"SourceFile":"Util\\Xml\\XmlUtil.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"},{"SourceFile":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\obj\\Debug\\Util\\UI\\MultiExWindow.g.cs"},{"SourceFile":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\obj\\Debug\\GeneratedInternalTypeHelper.g.cs"}],"References":[{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\IIS\\Microsoft Web Deploy V3\\Newtonsoft.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\CustomRictBox\\bin\\Debug\\PdmSwPlugin.UI.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"D:\\Workspace\\PdmSwPlugin2\\CustomRictBox\\bin\\Debug\\PdmSwPlugin.UI.dll"},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationCore.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationFramework.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.sldworks.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.swconst.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.swdocumentmgr.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Configuration.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xaml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\WindowsBase.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\bin\\Debug\\PdmSwPlugin.Common.dll","OutputItemRelativePath":"PdmSwPlugin.Common.dll"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]}
\ No newline at end of file
+{"RootPath":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common","ProjectFileName":"PdmSwPlugin.Common.csproj","Configuration":"Debug|x64","FrameworkPath":"","Sources":[{"SourceFile":"Attribute\\PdmSwPlugin.cs"},{"SourceFile":"BomIniter\\NameUtil.cs"},{"SourceFile":"BomIniter\\YwtBomIniter.cs"},{"SourceFile":"ClassLoader.cs"},{"SourceFile":"Constants\\PriceCheckName.cs"},{"SourceFile":"Constants\\PropertyName.cs"},{"SourceFile":"Constants\\Settings.cs"},{"SourceFile":"Control\\RichHisWindow.xaml.cs"},{"SourceFile":"Control\\TreeGrid\\Controls\\TreeDataGrid.cs"},{"SourceFile":"Control\\TreeGrid\\Controls\\TreeGrid.cs"},{"SourceFile":"Control\\TreeGrid\\Controls\\TreeItemContentControl.cs"},{"SourceFile":"Control\\TreeGrid\\Controls\\TreeItemData.cs"},{"SourceFile":"Entity\\BusinessType.cs"},{"SourceFile":"Entity\\DrawAudit\\DrawAudit.cs"},{"SourceFile":"Entity\\DrawAudit\\DrawAuditHis.cs"},{"SourceFile":"Entity\\DrawAudit\\DrawAuditOrder.cs"},{"SourceFile":"Entity\\NoteAndPos.cs"},{"SourceFile":"Entity\\NotifyBase.cs"},{"SourceFile":"Entity\\Page.cs"},{"SourceFile":"Entity\\PartSpec.cs"},{"SourceFile":"Entity\\PdmPart.cs"},{"SourceFile":"BomIniter\\BomIniter.cs"},{"SourceFile":"BomIniter\\BomIniterHolder.cs"},{"SourceFile":"BomIniter\\LHJBomIniter.cs"},{"SourceFile":"Interface\\IContectSelectionChangeHandler.cs"},{"SourceFile":"Interface\\IContextHandler.cs"},{"SourceFile":"Setting\\PluginSetting.cs"},{"SourceFile":"Entity\\Pdm\\PdmBom.cs"},{"SourceFile":"Entity\\PluginInfo.cs"},{"SourceFile":"Entity\\PropertyInfo_2D.cs"},{"SourceFile":"Entity\\SldComponentInfo_DM.cs"},{"SourceFile":"Entity\\System\\PdmUser.cs"},{"SourceFile":"Event\\Events.cs"},{"SourceFile":"Exception\\PdmException.cs"},{"SourceFile":"Interface\\Base\\ActiveDocChangeHandlerBase.cs"},{"SourceFile":"Interface\\IActiveDocChangeHandler.cs"},{"SourceFile":"Interface\\ISwAppSetter.cs"},{"SourceFile":"properties\\AssemblyInfo.cs"},{"SourceFile":"Setting\\CustomerSetting.cs"},{"SourceFile":"Setting\\YwtUserSetting.cs"},{"SourceFile":"Util\\BinUtil.cs"},{"SourceFile":"Util\\DictionaryUtil.cs"},{"SourceFile":"Util\\Encryptor.cs"},{"SourceFile":"Util\\LimitedConcurrencyLevelTaskScheduler.cs"},{"SourceFile":"Util\\NumberUtil.cs"},{"SourceFile":"Util\\OpenDocContext.cs"},{"SourceFile":"Util\\Pdm\\ComponentAndTask.cs"},{"SourceFile":"Util\\Pdm\\BomTreeReader.cs"},{"SourceFile":"Util\\Permission\\PermissionUtil.cs"},{"SourceFile":"Util\\SwDMUtil.cs"},{"SourceFile":"Util\\UI\\MaskAdorner.cs"},{"SourceFile":"Util\\Common\\BeanUtil.cs"},{"SourceFile":"Util\\Common\\MsgBoxHelper.cs"},{"SourceFile":"Util\\CustomPropertyUtil.cs"},{"SourceFile":"Util\\DMSldFileExtentionChecker.cs"},{"SourceFile":"Util\\CustomerPropertiesWrapper.cs"},{"SourceFile":"Util\\Common\\DocUtil.cs"},{"SourceFile":"Util\\EngineeringDrawingFile.cs"},{"SourceFile":"Util\\EngineeringDrawingPropertiesClass.cs"},{"SourceFile":"Util\\FileExtentionChecker.cs"},{"SourceFile":"Util\\Common\\FileUtil.cs"},{"SourceFile":"Util\\GetDocumentPropertiesViaDM.cs"},{"SourceFile":"Util\\Http\\GlobalExceptionHandler.cs"},{"SourceFile":"Util\\Http\\HttpClientCreator.cs"},{"SourceFile":"Util\\Http\\HttpUtil.cs"},{"SourceFile":"Util\\Http\\Result.cs"},{"SourceFile":"Util\\Common\\JsonUtil.cs"},{"SourceFile":"Util\\Common\\MD5Util.cs"},{"SourceFile":"Util\\Pdm\\ModelUtil.cs"},{"SourceFile":"Util\\UI\\MultiExWindow.xaml.cs"},{"SourceFile":"Util\\WindowIntPtrUtil.cs"},{"SourceFile":"Util\\Xml\\XmlUtil.cs"},{"SourceFile":"obj\\x64\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"},{"SourceFile":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\obj\\x64\\Debug\\Control\\RichHisWindow.g.cs"},{"SourceFile":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\obj\\x64\\Debug\\Util\\UI\\MultiExWindow.g.cs"},{"SourceFile":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\obj\\x64\\Debug\\GeneratedInternalTypeHelper.g.cs"}],"References":[{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\Newtonsoft.Json.13.0.3\\lib\\net45\\Newtonsoft.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\CustomRictBox\\bin\\x64\\Debug\\PdmSwPlugin.UI.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"D:\\Workspace\\PdmSwPlugin2\\CustomRictBox\\bin\\x64\\Debug\\PdmSwPlugin.UI.dll"},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationCore.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationFramework.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.sldworks.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.swconst.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.swdocumentmgr.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Configuration.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xaml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\WindowsBase.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\bin\\x64\\Debug\\PdmSwPlugin.Common.dll","OutputItemRelativePath":"PdmSwPlugin.Common.dll"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]}
\ No newline at end of file
diff --git a/PdmSwPlugin.Common/Entity/DrawAudit/DrawAudit.cs b/PdmSwPlugin.Common/Entity/DrawAudit/DrawAudit.cs
index 50ec173..7d21d4a 100644
--- a/PdmSwPlugin.Common/Entity/DrawAudit/DrawAudit.cs
+++ b/PdmSwPlugin.Common/Entity/DrawAudit/DrawAudit.cs
@@ -45,6 +45,14 @@
set { _status = value; }
}
+ private string _statusArr;
+
+ public string statusArr
+ {
+ get { return _statusArr; }
+ set { _statusArr = value; }
+ }
+
public string d3Md5 { get; set; }
public string d3RelativePath { get; set; }
public string d2Md5 { get; set; }
diff --git a/PdmSwPlugin.Common/PdmSwPlugin.Common.csproj b/PdmSwPlugin.Common/PdmSwPlugin.Common.csproj
index f7ea2e9..1552084 100644
--- a/PdmSwPlugin.Common/PdmSwPlugin.Common.csproj
+++ b/PdmSwPlugin.Common/PdmSwPlugin.Common.csproj
@@ -101,7 +101,9 @@
<Compile Include="properties\AssemblyInfo.cs" />
<Compile Include="Setting\CustomerSetting.cs" />
<Compile Include="Setting\YwtUserSetting.cs" />
+ <Compile Include="Util\BinUtil.cs" />
<Compile Include="Util\DictionaryUtil.cs" />
+ <Compile Include="Util\Encryptor.cs" />
<Compile Include="Util\LimitedConcurrencyLevelTaskScheduler.cs" />
<Compile Include="Util\NumberUtil.cs" />
<Compile Include="Util\OpenDocContext.cs" />
@@ -153,10 +155,6 @@
</Reference>
<Reference Include="SolidWorks.Interop.swdocumentmgr">
<HintPath>C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\api\redist\SolidWorks.Interop.swdocumentmgr.dll</HintPath>
- <EmbedInteropTypes>True</EmbedInteropTypes>
- </Reference>
- <Reference Include="SolidWorks.Interop.swpublished">
- <HintPath>..\..\..\..\..\Program Files\SOLIDWORKS Corp\SOLIDWORKS\api\redist\SolidWorks.Interop.swpublished.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="System">
diff --git a/PdmSwPlugin.Common/Style/LinkButton.xaml b/PdmSwPlugin.Common/Style/LinkButton.xaml
index 0dd1ec4..cbba990 100644
--- a/PdmSwPlugin.Common/Style/LinkButton.xaml
+++ b/PdmSwPlugin.Common/Style/LinkButton.xaml
@@ -27,4 +27,28 @@
</Setter.Value>
</Setter>
</Style>
+
+ <Style x:Key="RButton" TargetType="{x:Type Button}" >
+ <Style.Resources>
+ <SolidColorBrush x:Key="TextColor">RED</SolidColorBrush>
+ </Style.Resources>
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="{x:Type ButtonBase}">
+ <ContentPresenter x:Name="buttonContent" TextBlock.FontSize="{TemplateBinding FontSize}"
+ TextBlock.FontFamily="{StaticResource iconfont}"
+ TextBlock.Foreground="{StaticResource TextColor}"
+ Margin="0,0,5,0"
+ VerticalAlignment="Center"
+ HorizontalAlignment="Center"
+ Content="{TemplateBinding Content}"/>
+ <ControlTemplate.Triggers>
+ <Trigger Property="IsMouseOver" Value="True">
+ <Setter TargetName="buttonContent" Property="TextBlock.Foreground" Value="Purple"/>
+ </Trigger>
+ </ControlTemplate.Triggers>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
</ResourceDictionary>
\ No newline at end of file
diff --git a/PdmSwPlugin.Common/Util/BinUtil.cs b/PdmSwPlugin.Common/Util/BinUtil.cs
new file mode 100644
index 0000000..63383dd
--- /dev/null
+++ b/PdmSwPlugin.Common/Util/BinUtil.cs
@@ -0,0 +1,59 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PdmSwPlugin.Common.Util
+{
+ public class BinUtil
+ {
+ /// <summary>
+ /// 鎶婃槑鏂囧瘑鐮佸姞瀵嗗悗浠ヤ簩杩涘埗瀛樺叆bin鏂囦欢涓�
+ /// TODO 浣跨敤鏈哄櫒鐮佸姞瀵�
+ /// </summary>
+ /// <param name="content">瀛楃鍐呭</param>
+ /// <param name="filePath">瀛樻斁璺緞</param>
+ public static void SaveStrToBin(string content, string filePath = null)
+ {
+ if (string.IsNullOrEmpty(filePath))
+ {
+ filePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().FullName), "bin");
+ }
+ byte[] bytes = Convert.FromBase64String(content);
+ using (Stream stream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
+ using (BinaryWriter writer = new BinaryWriter(stream))
+ {
+ writer.Write(bytes);
+ }
+ }
+
+ /// <summary>
+ /// 浠巄in涓姞杞藉瓧绗︿覆
+ /// </summary>
+ /// <param name="content">瀛楃涓插唴瀹�</param>
+ /// <param name="filePath">bin鏂囦欢璺緞</param>
+ /// <returns>璇诲彇鏄惁鎴愬姛</returns>
+ public static bool LoadStrFromBin(ref string content, string filePath = null)
+ {
+ if (string.IsNullOrEmpty(filePath))
+ {
+ filePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().FullName), "bin");
+ }
+ if (!File.Exists(filePath))
+ {
+ return false;
+ }
+ using (FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
+ using (BinaryReader reader = new BinaryReader(stream))
+ {
+ byte[] bytes = new byte[stream.Length];
+ reader.Read(bytes, 0, bytes.Length);
+ content = Convert.ToBase64String(bytes);
+ return true;
+ }
+ }
+ }
+}
diff --git a/PdmSwPlugin.Common/Util/Encryptor.cs b/PdmSwPlugin.Common/Util/Encryptor.cs
new file mode 100644
index 0000000..6cd2ae6
--- /dev/null
+++ b/PdmSwPlugin.Common/Util/Encryptor.cs
@@ -0,0 +1,69 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PdmSwPlugin.Common.Util
+{
+ /// <summary>
+ /// 瀛楃鍔犺В瀵�
+ /// </summary>
+ public class Encryptor
+ {
+ private readonly byte[] key;
+ private readonly byte[] iv;
+
+ public Encryptor(string keyString, string ivString)
+ {
+ key = Encoding.UTF8.GetBytes(keyString);
+ iv = Encoding.UTF8.GetBytes(ivString);
+ }
+
+ public string Encrypt(string plainText)
+ {
+ using (var aes = Aes.Create())
+ {
+ aes.Key = key;
+ aes.IV = iv;
+ ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
+
+ using (MemoryStream msEncrypt = new MemoryStream())
+ {
+ using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
+ {
+ using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
+ {
+ swEncrypt.Write(plainText);
+ }
+ return Convert.ToBase64String(msEncrypt.ToArray());
+ }
+ }
+ }
+ }
+
+
+ public string Decrypt(string cipherText)
+ {
+ using (var aes = Aes.Create())
+ {
+ aes.Key = key;
+ aes.IV = iv;
+ ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
+ byte[] arr = Convert.FromBase64String(cipherText);
+ using (MemoryStream msDecrypt = new MemoryStream(arr))
+ {
+ using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
+ {
+ using (StreamReader srDecrypt = new StreamReader(csDecrypt))
+ {
+ return srDecrypt.ReadToEnd();
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/PdmSwPlugin.DrawApprove/DrawApprove.xaml b/PdmSwPlugin.DrawApprove/DrawApprove.xaml
index ded5c69..a33fedc 100644
--- a/PdmSwPlugin.DrawApprove/DrawApprove.xaml
+++ b/PdmSwPlugin.DrawApprove/DrawApprove.xaml
@@ -99,125 +99,163 @@
</ResourceDictionary>
</UserControl.Resources>
<AdornerDecorator>
- <Grid x:Name="sb">
- <DockPanel x:Name="content" LastChildFill="True">
+ <Grid x:Name="content">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="30"/>
+ <RowDefinition Height="30"/>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="20"/>
+ </Grid.RowDefinitions>
+
+ <ToolBarTray Grid.Row="0" DockPanel.Dock="Top" Background="#FFF" ToolBarTray.IsLocked="True" >
+ <ToolBar Style="{StaticResource CommonToolBar}" ToolBar.OverflowMode="Never" Band="1" BandIndex="1" Height="30" Background="#FFF">
+ <Button ToolTip="鍒锋柊" Content="鍒锋柊" FontFamily="{StaticResource iconfont}" FontSize="16"
+ Click="Button_Click"/>
+ </ToolBar>
+ </ToolBarTray>
- <ToolBarTray DockPanel.Dock="Top" Background="#FFF" ToolBarTray.IsLocked="True" >
- <ToolBar Style="{StaticResource CommonToolBar}" ToolBar.OverflowMode="Never" Band="1" BandIndex="1" Height="30" Background="#FFF">
- <Button ToolTip="鍒锋柊" Content="鍒锋柊" FontFamily="{StaticResource iconfont}" FontSize="16"
- Click="Button_Click"/>
- </ToolBar>
- </ToolBarTray>
+ <StackPanel Grid.Row="1" Orientation="Horizontal" DockPanel.Dock="Top" VerticalAlignment="Center">
+ <Label FontSize="16">鐘舵��</Label>
+ <CheckBox FontSize="16" Margin="0,0,10,0" VerticalContentAlignment="Center" x:Name="subcb" IsChecked="True">寰呭鏍�</CheckBox>
+ <CheckBox FontSize="16" Margin="0,0,10,0" VerticalContentAlignment="Center" x:Name="resubcb" IsChecked="True">閲嶆柊瀹℃牳</CheckBox>
+ <CheckBox FontSize="16" Margin="0,0,10,0" VerticalContentAlignment="Center" x:Name="comcb">宸插畬鎴�</CheckBox>
+ <CheckBox FontSize="16" Margin="0,0,20,0" VerticalContentAlignment="Center" x:Name="rejcb">宸查┏鍥�</CheckBox>
+ </StackPanel>
- <!-- 鏍戠粨鏋� -->
- <treeData:TreeDataGrid x:Name="treeDataGrid" DockPanel.Dock="Top"
- ColumnWidth="*"
- ItemsSource="{Binding dataSource,Converter={StaticResource TreeItemDataConverter},ConverterParameter=children}"
- AutoGenerateColumns="False"
- CanUserAddRows="False"
- CanUserSortColumns="False"
- RowHeaderWidth="0"
- FontSize="18"
- CanUserDeleteRows="False">
+ <!-- 鏍戠粨鏋� -->
+ <treeData:TreeDataGrid x:Name="treeDataGrid" DockPanel.Dock="Top" Grid.Row="2"
+ ColumnWidth="*"
+ ItemsSource="{Binding dataSource,Converter={StaticResource TreeItemDataConverter},ConverterParameter=children}"
+ AutoGenerateColumns="False"
+ CanUserAddRows="False"
+ CanUserSortColumns="False"
+ RowHeaderWidth="0"
+ FontSize="18"
+ FrozenColumnCount="1"
+ HorizontalScrollBarVisibility="Auto"
+ CanUserDeleteRows="False">
- <treeData:TreeDataGrid.Resources>
- <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="Transparent"/>
- </treeData:TreeDataGrid.Resources>
+ <treeData:TreeDataGrid.Resources>
+ <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="Transparent"/>
+ </treeData:TreeDataGrid.Resources>
- <treeData:TreeDataGrid.RowStyle>
-
-
- <Style TargetType="DataGridRow">
- <Style.Triggers>
- <DataTrigger Binding="{Binding Path=Data.IsOpening}" Value="True">
- <Setter Property="Background" Value="Orange"/>
- </DataTrigger>
- </Style.Triggers>
- </Style>
- </treeData:TreeDataGrid.RowStyle>
+ <treeData:TreeDataGrid.RowStyle>
- <treeData:TreeDataGrid.CellStyle>
- <Style TargetType="DataGridCell" >
- <Style.Triggers>
- <MultiDataTrigger>
- <MultiDataTrigger.Conditions>
- <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridCell}}, Path=IsSealed}" Value="True"/>
- <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=IsKeyboardFocusWithin}" Value="False"/>
- </MultiDataTrigger.Conditions>
- <Setter Property="Background" Value="RED"/>
- </MultiDataTrigger>
- </Style.Triggers>
- </Style>
- </treeData:TreeDataGrid.CellStyle>
- <treeData:TreeDataGrid.Columns>
- <DataGridTemplateColumn Width="25">
- <DataGridTemplateColumn.Header>
- <CheckBox Checked="GlobalCheckBox_Checked" Unchecked="GlobalCheckBox_Checked" />
- </DataGridTemplateColumn.Header>
+ <Style TargetType="DataGridRow">
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding Path=Data.IsOpening}" Value="True">
+ <Setter Property="Background" Value="Orange"/>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </treeData:TreeDataGrid.RowStyle>
- <DataGridTemplateColumn.CellTemplate>
- <DataTemplate>
- <CheckBox DataContext="{Binding Data}"
- IsChecked="{Binding selected}" Checked="SingleCheckBox_Event" Unchecked="SingleCheckBox_Event"/>
- </DataTemplate>
- </DataGridTemplateColumn.CellTemplate>
- </DataGridTemplateColumn>
+ <treeData:TreeDataGrid.CellStyle>
+ <Style TargetType="DataGridCell" >
+ <Style.Triggers>
+ <MultiDataTrigger>
+ <MultiDataTrigger.Conditions>
+ <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridCell}}, Path=IsSealed}" Value="True"/>
+ <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=IsKeyboardFocusWithin}" Value="False"/>
+ </MultiDataTrigger.Conditions>
+ <Setter Property="Background" Value="RED"/>
+ </MultiDataTrigger>
+ </Style.Triggers>
+ </Style>
+ </treeData:TreeDataGrid.CellStyle>
- <DataGridTemplateColumn Header="鐗╂枡缂栧彿" IsReadOnly="True">
- <DataGridTemplateColumn.CellTemplate>
- <DataTemplate>
- <StackPanel Orientation="Horizontal">
- <TextBox IsReadOnly="True" Background="Transparent" BorderThickness="0" HorizontalContentAlignment="Stretch" Text="{Binding Data.materialCode,Mode=OneWay}"/>
- </StackPanel>
- </DataTemplate>
- </DataGridTemplateColumn.CellTemplate>
- </DataGridTemplateColumn>
+ <treeData:TreeDataGrid.Columns>
+ <!--<DataGridTemplateColumn Width="25">
+ <DataGridTemplateColumn.Header>
+ <CheckBox Checked="GlobalCheckBox_Checked" Unchecked="GlobalCheckBox_Checked" />
+ </DataGridTemplateColumn.Header>
- <DataGridTextColumn Header="鐢宠浜�" Width="100" IsReadOnly="True" Binding="{Binding Data.requestUser}"/>
- <DataGridTextColumn Header="娴佹按鍗曞彿" Width="120" IsReadOnly="True" Binding="{Binding Data.orderCode}"/>
- <DataGridTextColumn Header="鍓嶄竴瀹℃牳浜�" Width="100" IsReadOnly="True" Binding="{Binding Data.auditUser}"/>
- <DataGridTextColumn Header="鎻愪氦鏃堕棿" Width="180" IsReadOnly="True" Binding="{Binding Data.updateTime}"/>
+ <DataGridTemplateColumn.CellTemplate>
+ <DataTemplate>
+ <CheckBox DataContext="{Binding Data}"
+ IsChecked="{Binding selected}" Checked="SingleCheckBox_Event" Unchecked="SingleCheckBox_Event"/>
+ </DataTemplate>
+ </DataGridTemplateColumn.CellTemplate>
+ </DataGridTemplateColumn>-->
- <DataGridTemplateColumn Header="鐘舵��" Width="80" IsReadOnly="True">
- <DataGridTemplateColumn.CellTemplate>
- <DataTemplate>
- <TextBlock Style="{StaticResource statusSlot}" DataContext="{Binding Data}"
- MouseLeftButtonDown="TextBlock_MouseLeftButtonDown"/>
- </DataTemplate>
- </DataGridTemplateColumn.CellTemplate>
- </DataGridTemplateColumn>
+ <DataGridTemplateColumn Header="鐗╂枡缂栧彿" IsReadOnly="True" Width="Auto">
+ <DataGridTemplateColumn.CellTemplate>
+ <DataTemplate>
+ <StackPanel Orientation="Horizontal">
+ <TextBox IsReadOnly="True" Background="Transparent" BorderThickness="0" HorizontalContentAlignment="Stretch" Text="{Binding Data.materialCode,Mode=OneWay}"/>
+ </StackPanel>
+ </DataTemplate>
+ </DataGridTemplateColumn.CellTemplate>
+ </DataGridTemplateColumn>
- <DataGridTemplateColumn Header="鎿嶄綔" Width="280" IsReadOnly="True">
- <DataGridTemplateColumn.CellTemplate>
- <DataTemplate>
- <StackPanel Orientation="Horizontal">
- <Button Style="{StaticResource LinkButton}" DataContext="{Binding Data}" Click="OpenDrw_Click">鎵撳紑宸ョ▼鍥�</Button>
- <Button Style="{StaticResource LinkButton}" DataContext="{Binding Data}" Click="OpenDoc_Click">鎵撳紑鍥剧焊</Button>
+ <DataGridTextColumn Header="鐢宠浜�" Width="100" IsReadOnly="True" Binding="{Binding Data.requestUser}"/>
+ <DataGridTextColumn Header="娴佹按鍗曞彿" Width="120" IsReadOnly="True" Binding="{Binding Data.orderCode}"/>
+ <DataGridTextColumn Header="鍓嶄竴瀹℃牳浜�" Width="100" IsReadOnly="True" Binding="{Binding Data.auditUser}"/>
+ <DataGridTextColumn Header="鎻愪氦鏃堕棿" Width="180" CanUserResize="False" IsReadOnly="True" Binding="{Binding Data.updateTime}"/>
+
+ <DataGridTemplateColumn Header="鐘舵��" Width="80" CanUserResize="False" IsReadOnly="True">
+ <DataGridTemplateColumn.CellTemplate>
+ <DataTemplate>
+ <TextBlock Style="{StaticResource statusSlot}" DataContext="{Binding Data}"
+ MouseLeftButtonDown="TextBlock_MouseLeftButtonDown"/>
+ </DataTemplate>
+ </DataGridTemplateColumn.CellTemplate>
+ </DataGridTemplateColumn>
+
+ <DataGridTemplateColumn Header="鎿嶄綔" Width="280" IsReadOnly="True" CanUserResize="False">
+ <DataGridTemplateColumn.CellTemplate>
+ <DataTemplate>
+ <StackPanel Orientation="Horizontal">
+ <Button Style="{StaticResource LinkButton}" DataContext="{Binding Data}" Click="OpenDrw_Click">鎵撳紑宸ョ▼鍥�</Button>
+ <Button Style="{StaticResource LinkButton}" DataContext="{Binding Data}" Click="OpenDoc_Click">鎵撳紑鍥剧焊</Button>
+ <StackPanel Orientation="Horizontal" Name="groupStack">
<Button Style="{StaticResource LinkButton}" DataContext="{Binding Data}" Click="Resolve_Click">閫氳繃</Button>
<Button Style="{StaticResource RLink}" DataContext="{Binding Data}" Margin="0" Click="Reject_Click">涓嶉�氳繃</Button>
</StackPanel>
- </DataTemplate>
- </DataGridTemplateColumn.CellTemplate>
- </DataGridTemplateColumn>
+ <Button Name="resetButton" Style="{StaticResource LinkButton}" DataContext="{Binding Data}" Click="Reset_Click">鎾ら攢</Button>
+ </StackPanel>
+
+ <DataTemplate.Triggers>
+ <DataTrigger Binding="{Binding Data.status}" Value="completed">
+ <Setter TargetName="groupStack" Property="Visibility" Value="Collapsed"/>
+ <Setter TargetName="resetButton" Property="Visibility" Value="Visible"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding Data.status}" Value="rejected">
+ <Setter TargetName="groupStack" Property="Visibility" Value="Collapsed"/>
+ <Setter TargetName="resetButton" Property="Visibility" Value="Visible"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding Data.status}" Value="submitted">
+ <Setter TargetName="groupStack" Property="Visibility" Value="Visible"/>
+ <Setter TargetName="resetButton" Property="Visibility" Value="Collapsed"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding Data.status}" Value="resubmitted">
+ <Setter TargetName="groupStack" Property="Visibility" Value="Visible"/>
+ <Setter TargetName="resetButton" Property="Visibility" Value="Collapsed"/>
+ </DataTrigger>
+ </DataTemplate.Triggers>
+ </DataTemplate>
+ </DataGridTemplateColumn.CellTemplate>
+ </DataGridTemplateColumn>
- </treeData:TreeDataGrid.Columns>
- </treeData:TreeDataGrid>
+ </treeData:TreeDataGrid.Columns>
+ </treeData:TreeDataGrid>
- <StatusBar DockPanel.Dock="Bottom" Height="20">
- <StatusBarItem >
- <TextBox x:Name="activeDocPath" IsReadOnly="True" Style="{StaticResource StatusBarTextBox}" Text="{Binding SelectBomText}"/>
- </StatusBarItem>
- <Separator/>
- <StatusBarItem>
- <TextBox x:Name="statusBarText" IsReadOnly="True" Style="{StaticResource StatusBarTextBox}" Text="{Binding StatusBarText}"/>
- </StatusBarItem>
- </StatusBar>
- <Border></Border>
- <!--<TextBox x:Name="console"></TextBox>-->
- </DockPanel>
+ <StatusBar Grid.Row="3" DockPanel.Dock="Top" Height="20">
+ <StatusBarItem >
+ <TextBox x:Name="activeDocPath" IsReadOnly="True" Style="{StaticResource StatusBarTextBox}" Text="{Binding SelectBomText}"/>
+ </StatusBarItem>
+ <Separator/>
+ <StatusBarItem>
+ <TextBox x:Name="statusBarText" IsReadOnly="True" Style="{StaticResource StatusBarTextBox}" Text="{Binding StatusBarText}"/>
+ </StatusBarItem>
+ </StatusBar>
+ <Border></Border>
+ <!--<DockPanel x:Name="content" LastChildFill="True">
+ --><!--<TextBox x:Name="console"></TextBox>--><!--
+ </DockPanel>-->
</Grid>
</AdornerDecorator>
</UserControl>
diff --git a/PdmSwPlugin.DrawApprove/DrawApprove.xaml.cs b/PdmSwPlugin.DrawApprove/DrawApprove.xaml.cs
index 5a77dfb..620746a 100644
--- a/PdmSwPlugin.DrawApprove/DrawApprove.xaml.cs
+++ b/PdmSwPlugin.DrawApprove/DrawApprove.xaml.cs
@@ -167,6 +167,7 @@
Dispatcher.Invoke(() =>
{
dataSource = new ObservableCollection<DrawAudit>(datas);
+
});
}
catch (Exception ex)
@@ -298,7 +299,23 @@
{
try
{
- Result<List<DrawAudit>> res = Client.GetSyncAction<List<DrawAudit>>("drawAudit/listWithTask");
+ string statusArr = string.Empty;
+ Dispatcher.Invoke(() =>
+ {
+ List<string> arr = new List<string>();
+ if (subcb.IsChecked == true) arr.Add("submitted");
+ if (resubcb.IsChecked == true) arr.Add("resubmitted");
+ if (comcb.IsChecked == true) arr.Add("completed");
+ if (rejcb.IsChecked == true) arr.Add("rejected");
+ if (arr.Count > 0)
+ {
+ statusArr = $"'{string.Join("','", arr)}'";
+ }
+ });
+ Result<List<DrawAudit>> res = Client.GetSyncAction<List<DrawAudit>>("drawAudit/listWithTask2", new DrawAudit
+ {
+ statusArr = statusArr
+ });
return res.HandleResult();
}
catch (Exception ex)
@@ -386,6 +403,49 @@
}
/// <summary>
+ /// 鍗曟潯鏁版嵁鎾ら攢鎸夐挳鐐瑰嚮浜嬩欢
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void Reset_Click(object sender, RoutedEventArgs e)
+ {
+ Button btn = sender as Button;
+ DrawAudit da = btn.DataContext as DrawAudit;
+ if (da.status == "submitted" && da.status == "resubmitted")
+ {
+ this.Warning("璇烽�夋嫨瀹℃牳杩囩殑鏁版嵁");
+ return;
+ }
+ MessageBoxResult mr = MessageBox.Show($"纭畾鎾ら攢鐗╂枡銆恵da.materialCode}銆戠殑鍥剧焊瀹℃壒鍚楋紵", "鎻愮ず", MessageBoxButton.OKCancel, MessageBoxImage.Question);
+ if (mr == MessageBoxResult.OK)
+ {
+ MaskAdorner.ShowMask(content, "璇锋眰涓紝璇风◢鍊�...");
+ Task.Run(() =>
+ {
+ try
+ {
+ Result<object> res = Client.PostSyncAction<object>(da, "drawAudit/reset");
+ object obj = res.HandleResult();
+ // CloseAuditedDoc(da);
+ Dispatcher.Invoke(() =>
+ {
+ dataSource = new ObservableCollection<DrawAudit>(RefreshList());
+ });
+ }
+ catch (Exception ex)
+ {
+ Logger.Error($"V{PdmUser.LoginUser.pluginVersion}, Draw Reset failed.", ex);
+ this.Error($"V{PdmUser.LoginUser.pluginVersion}锛屾挙閿�澶辫触锛亄ex.Message}");
+ }
+ finally
+ {
+ MaskAdorner.HideMask(content);
+ }
+ });
+ }
+ }
+
+ /// <summary>
/// 鍗曟潯鏁版嵁椹冲洖鎸夐挳鐐瑰嚮浜嬩欢
/// </summary>
/// <param name="sender"></param>
@@ -457,7 +517,16 @@
public void OnSwActiveDocChange(ModelDoc2 oldDoc, ModelDoc2 newDoc, Component2 comp)
{
- var fileName = new Uri(newDoc.GetPathName());
+ string path = newDoc.GetPathName();
+ Uri fileName;
+ if (string.IsNullOrEmpty(path))
+ {
+ fileName = null;
+ }
+ else
+ {
+ fileName = new Uri(newDoc.GetPathName());
+ }
foreach (var e in dataSource)
{
var d2Path = new Uri(GetRealFilePath(e.d2RelativePath));
@@ -468,22 +537,22 @@
public void OnSwActiveDocSaved(ModelDoc2 doc, Component2 comp)
{
-
+
}
public void OnCustomPropertyChange(string propName, string Configuration, string oldValue, string NewValue, int valueType)
{
-
+
}
public void OnDocDestroy(ModelDoc2 doc)
{
-
+
}
public void AfterDocDestroy()
{
-
+
}
}
}
diff --git a/PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml b/PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml
index 2652a32..ea0ab73 100644
--- a/PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml
+++ b/PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml
@@ -118,7 +118,16 @@
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Style="{StaticResource LinkButton}" DataContext="{Binding Data}" Click="Detail_Click">瀹℃牳璇︽儏</Button>
+ <Button Style="{StaticResource RButton}" x:Name="backBtn" Visibility="Collapsed" DataContext="{Binding Data}" Click="Reback_Click">鎾ら攢</Button>
</StackPanel>
+ <DataTemplate.Triggers>
+ <DataTrigger Binding="{Binding Data.status}" Value="submitted">
+ <Setter Property="Visibility" TargetName="backBtn" Value="Visible"/>
+ </DataTrigger>
+ <DataTrigger Binding="{Binding Data.status}" Value="resubmitted">
+ <Setter Property="Visibility" TargetName="backBtn" Value="Visible"/>
+ </DataTrigger>
+ </DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
diff --git a/PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml.cs b/PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml.cs
index 63d4956..68c5d77 100644
--- a/PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml.cs
+++ b/PdmSwPlugin.DrawApprove/DrawAuditHisControl.xaml.cs
@@ -263,6 +263,42 @@
GetAuditHisDetailAndOpen(da);
}
+ private void Reback_Click(object sender, RoutedEventArgs e)
+ {
+ Button btn = sender as Button;
+ DrawAudit da = btn.DataContext as DrawAudit;
+ MessageBoxResult mr = MessageBox.Show($"纭畾鎾ら攢鐗╂枡銆恵da.materialCode}銆戠殑鍥剧焊瀹℃壒鍚楋紵", "鎻愮ず", MessageBoxButton.OKCancel, MessageBoxImage.Question);
+ if (mr == MessageBoxResult.OK)
+ {
+ MaskAdorner.ShowMask(content, "璇锋眰涓紝璇风◢鍚�...");
+ Task.Run(() =>
+ {
+ try
+ {
+ Result<List<DrawAuditHis>> res = Client.PostSyncAction<List<DrawAuditHis>>(new DrawAudit
+ {
+ id = da.id,
+ requestUserId = PdmUser.LoginUser.id
+ }, "drawAudit/back");
+ res.HandleResult();
+ Dispatcher.Invoke(() =>
+ {
+ dataSource = new ObservableCollection<DrawAudit>(RefreshList());
+ });
+ }
+ catch (Exception ex)
+ {
+ Logger.Error("Reback Draw Audit Failed.", ex);
+ this.Error($"鎾ら攢鐢宠澶辫触锛亄ex.Message}");
+ }
+ finally
+ {
+ MaskAdorner.HideMask(content);
+ }
+ });
+ }
+ }
+
private string GetRealFilePath(string dbPath)
{
string fileName = Path.GetFileName(dbPath);
diff --git a/PdmSwPlugin.Main/Constant/PluginConst.cs b/PdmSwPlugin.Main/Constant/PluginConst.cs
index 5720411..6470d7c 100644
--- a/PdmSwPlugin.Main/Constant/PluginConst.cs
+++ b/PdmSwPlugin.Main/Constant/PluginConst.cs
@@ -3,6 +3,6 @@
public class PluginConst
{
public static readonly string AppId = "DF23E96F-A469-4302-8367-7FA2F798CD09";
- public static readonly string Version = "0.0.0.41";
+ public static readonly string Version = "0.0.0.42";
}
}
diff --git a/PdmSwPlugin.Main/LoginControl.xaml b/PdmSwPlugin.Main/LoginControl.xaml
new file mode 100644
index 0000000..638925f
--- /dev/null
+++ b/PdmSwPlugin.Main/LoginControl.xaml
@@ -0,0 +1,31 @@
+锘�<UserControl x:Class="PdmSwPlugin.Main.LoginControl"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:local="clr-namespace:PdmSwPlugin.Main"
+ mc:Ignorable="d"
+ Loaded="UserControl_Loaded"
+ d:DesignHeight="450" d:DesignWidth="800">
+ <AdornerDecorator>
+ <Grid Height="200" VerticalAlignment="Top" Margin="20" x:Name="mainGrid">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="30"/>
+ <RowDefinition Height="30"/>
+ <RowDefinition Height="30"/>
+ <RowDefinition Height="50"/>
+ </Grid.RowDefinitions>
+
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="50"/>
+ <ColumnDefinition/>
+ </Grid.ColumnDefinitions>
+ <Label Content="鐢ㄦ埛鍚�" VerticalContentAlignment="Center" Grid.Row="0" Grid.Column="0"/>
+ <TextBox x:Name="usernameTextBlock" VerticalAlignment="Stretch" VerticalContentAlignment="Center" Grid.Row="0" Grid.Column="1"/>
+ <Label Content="瀵嗙爜" VerticalContentAlignment="Center" Grid.Row="1" Grid.Column="0"/>
+ <PasswordBox x:Name="passwordTextBlock" VerticalAlignment="Stretch" VerticalContentAlignment="Center" Grid.Row="1" Grid.Column="1"/>
+ <CheckBox x:Name="rememberMeInput" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" VerticalContentAlignment="Center">鑷姩鐧诲綍</CheckBox>
+ <Button Margin="0,10,0,0" Click="Button_Click" Padding="5" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2">鐧诲綍</Button>
+ </Grid>
+ </AdornerDecorator>
+</UserControl>
diff --git a/PdmSwPlugin.Main/LoginControl.xaml.cs b/PdmSwPlugin.Main/LoginControl.xaml.cs
new file mode 100644
index 0000000..4e53cd5
--- /dev/null
+++ b/PdmSwPlugin.Main/LoginControl.xaml.cs
@@ -0,0 +1,206 @@
+锘縰sing PdmSwPlugin.Commmon.Util.UI;
+using PdmSwPlugin.Common.Entity.System;
+using PdmSwPlugin.Common.Util.Http;
+using PdmSwPlugin.Common.Util;
+using System;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.IO;
+using PdmSwPlugin.Common.Interface;
+using SolidWorks.Interop.sldworks;
+using log4net;
+using PdmSwPlugin.Common.Setting;
+
+namespace PdmSwPlugin.Main
+{
+ /// <summary>
+ /// LoginControl.xaml 鐨勪氦浜掗�昏緫
+ /// </summary>
+ public partial class LoginControl : UserControl, ISwAppSetter
+ {
+
+ private static readonly Encryptor encryptor = new Encryptor("aB3dE5fG7hI9jjK1lMnOpQrS2tUvWxYz",
+ "8Wq9RsT4vYx6ZuB1");
+
+ private SldWorks swApp;
+ public SldWorks SwApp => swApp;
+ private ILog Logger = LogManager.GetLogger("Main");
+ private PluginSetting GlobalConfig = PluginSetting.Instance;
+ private Action successCallback;
+
+ public LoginControl(Action successCallback)
+ {
+ this.successCallback = successCallback;
+ InitializeComponent();
+ }
+
+ /// <summary>
+ /// 鑷姩鐧诲綍
+ /// </summary>
+ /// <param name="callback"></param>
+ /// <param name="reject"></param>
+ private void AutoLogin(Action<PdmUser> callback, Action<Exception> reject)
+ {
+ MaskAdorner.ShowMask(mainGrid, "鐧婚檰涓�...");
+ Task.Run(() =>
+ {
+ try
+ {
+ if (GlobalConfig.ClassicLogin)
+ {
+ string binPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData), "HengXin", "PdmSwPlugin", "bin");
+ if (!File.Exists(binPath))
+ {
+ callback(null);
+ return;
+ }
+ string content = null;
+ if (!BinUtil.LoadStrFromBin(ref content, binPath))
+ {
+ callback(null);
+ return;
+ }
+ try
+ {
+ PdmUser param = JsonUtil.Deserialize<PdmUser>(encryptor.Decrypt(content));
+ Result<PdmUser> res = HttpClientCreator.PostSyncAction<PdmUser>("openApi/wpf/login", new PdmUser
+ {
+ appId = PluginConst.AppId,
+ pluginVersion = PluginConst.Version,
+ username = param.username,
+ password = param.password
+ });
+ PdmUser user = res.HandleResult();
+ user.appId = PluginConst.AppId;
+ user.pluginVersion = PluginConst.Version;
+ user.password = param.password;
+ callback(user);
+ }
+ catch (Exception ex)
+ {
+ Logger.Error("Remember Me Login Failed锛�", ex);
+ callback(null);
+ }
+ }
+ else
+ {
+ Result<PdmUser> res = HttpClientCreator.GetSyncAction<PdmUser>("openApi/wpf/simpleLogin", new PdmUser
+ {
+ username = System.Environment.UserName,
+ appId = PluginConst.AppId,
+ pluginVersion = PluginConst.Version
+ });
+ PdmUser user = res.HandleResult();
+ user.appId = PluginConst.AppId;
+ user.pluginVersion = PluginConst.Version;
+ callback(user);
+ }
+ }
+ catch (Exception e)
+ {
+ reject(e);
+ }
+ finally
+ {
+ MaskAdorner.HideMask(mainGrid);
+ }
+ });
+ }
+
+ private void UserControl_Loaded(object sender, RoutedEventArgs e)
+ {
+
+ AutoLogin(
+ (user) =>
+ {
+ if (user != null)
+ {
+ Dispatcher.Invoke(() =>
+ {
+ PdmUser.SetLoginUser(user);
+ if (PdmUser.HasLogin())
+ {
+ LoginSuccess();
+ }
+ });
+ }
+ },
+ (ex) =>
+ {
+ Logger.Error("鐧婚檰澶辫触锛�", ex);
+ this.Error($"鐧婚檰澶辫触! {ex.Message}");
+ });
+ }
+
+ /// <summary>
+ /// 鍔犺浇鎻掍欢涓籘ab
+ /// </summary>
+ public void LoginSuccess()
+ {
+ if (rememberMeInput.IsChecked == true)
+ {
+ // 鍕鹃�夎嚜鍔ㄧ櫥褰曠殑澶勭悊
+ string userInfo = JsonUtil.Stringfiy(PdmUser.LoginUser);
+ string binDir = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData), "HengXin", "PdmSwPlugin");
+ if (!Directory.Exists(binDir))
+ {
+ Directory.CreateDirectory(binDir);
+ }
+ string binPath = Path.Combine(binDir, "bin");
+ BinUtil.SaveStrToBin(encryptor.Encrypt(userInfo), binPath);
+ }
+ successCallback();
+ }
+
+ /// <summary>
+ /// 鐧婚檰鐐瑰嚮浜嬩欢
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ MaskAdorner.ShowMask(mainGrid, "鐧婚檰涓�...");
+ PdmUser param = new PdmUser
+ {
+ username = usernameTextBlock.Text,
+ password = passwordTextBlock.Password,
+ appId = PluginConst.AppId,
+ pluginVersion = PluginConst.Version
+ };
+ Task.Run(() =>
+ {
+ try
+ {
+ Result<PdmUser> res = HttpClientCreator.PostSyncAction<PdmUser>("openApi/wpf/login", param);
+ PdmUser user = res.HandleResult();
+ user.appId = PluginConst.AppId;
+ user.pluginVersion = PluginConst.Version;
+ user.password = param.password;
+ Dispatcher.Invoke(() =>
+ {
+ PdmUser.SetLoginUser(user);
+ if (PdmUser.HasLogin())
+ {
+ LoginSuccess();
+ }
+ });
+ }
+ catch (Exception ex)
+ {
+ Logger.Error("鐧婚檰澶辫触锛�", ex);
+ this.Error($"鐧婚檰澶辫触! {ex.Message}");
+ }
+ finally
+ {
+ MaskAdorner.HideMask(mainGrid);
+ }
+ });
+ }
+
+ public void SetSwApp(SldWorks SwApp)
+ {
+ this.swApp = SwApp;
+ }
+ }
+}
diff --git a/PdmSwPlugin.Main/MainControl.xaml b/PdmSwPlugin.Main/MainControl.xaml
index 1a29880..aab11ca 100644
--- a/PdmSwPlugin.Main/MainControl.xaml
+++ b/PdmSwPlugin.Main/MainControl.xaml
@@ -12,29 +12,11 @@
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
VerticalAlignment="Stretch"
+ Unloaded="self_Unloaded"
Loaded="MainControl_Loaded">
<AdornerDecorator>
<Border x:Name="mainBorder">
- <Grid Height="200" VerticalAlignment="Top" Margin="20">
- <Grid.RowDefinitions>
- <RowDefinition Height="30"/>
- <RowDefinition Height="30"/>
- <RowDefinition Height="50"/>
- </Grid.RowDefinitions>
-
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="50"/>
- <ColumnDefinition/>
- </Grid.ColumnDefinitions>
- <Label Content="鐢ㄦ埛鍚�" VerticalContentAlignment="Center" Grid.Row="0" Grid.Column="0"/>
- <TextBox x:Name="usernameTextBlock" VerticalAlignment="Stretch" VerticalContentAlignment="Center" Grid.Row="0" Grid.Column="1"/>
- <Label Content="瀵嗙爜" VerticalContentAlignment="Center" Grid.Row="1" Grid.Column="0"/>
- <PasswordBox x:Name="passwordTextBlock" VerticalAlignment="Stretch" VerticalContentAlignment="Center" Grid.Row="1" Grid.Column="1"/>
- <Button Margin="0,10,0,0" Click="Button_Click" Padding="5" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2">鐧诲綍</Button>
- </Grid>
- <!--<TabControl x:Name="tab">
-
- </TabControl>-->
+
</Border>
</AdornerDecorator>
</UserControl>
diff --git a/PdmSwPlugin.Main/MainControl.xaml.cs b/PdmSwPlugin.Main/MainControl.xaml.cs
index 050ac1d..f2ed4ac 100644
--- a/PdmSwPlugin.Main/MainControl.xaml.cs
+++ b/PdmSwPlugin.Main/MainControl.xaml.cs
@@ -15,6 +15,9 @@
using PdmSwPlugin.Common.Interface;
using SolidWorks.Interop.sldworks;
using System.Windows.Threading;
+using SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Protocol;
+using PdmSwPlugin.Main.Tcp;
namespace PdmSwPlugin.Main
{
@@ -24,9 +27,42 @@
/// </summary>
public partial class MainControl : UserControl, ISwAppSetter
{
+ private TcpServer tcpServer;
+ public void InitTcpServer()
+ {
+ tcpServer = new TcpServer();
+ tcpServer.NewRequestReceived += new RequestHandler<TcpSession, StringRequestInfo>(HandleRequest);
+ if (!tcpServer.Setup(5678))
+ {
+ Logger.Error("Tcp Server Setup Error.");
+ }
+ if (!tcpServer.Start())
+ {
+ Logger.Error("Tcp Server Start Error.");
+ }
+ }
- #region 鎺т欢
- #endregion
+ public void StopTcpServer()
+ {
+ tcpServer?.Stop();
+ tcpServer = null;
+ }
+
+ public void HandleRequest(TcpSession session, StringRequestInfo info)
+ {
+ byte[] msg = new byte[1];
+ if (PdmUser.LoginUser != null)
+ {
+ // 鐧诲綍杩斿洖1
+ msg[0] = 1;
+ }
+ else
+ {
+ // 娌$櫥褰曡繑鍥�0
+ msg[0] = 0;
+ }
+ session.Send(msg, 0, 1);
+ }
#region 妫�鏌ユ洿鏂扮浉鍏�
/// <summary>
@@ -149,46 +185,6 @@
}
#endregion
-
- /// <summary>
- /// 鑷姩鐧诲綍
- /// </summary>
- /// <param name="callback"></param>
- /// <param name="reject"></param>
- private void AutoLogin(Action<PdmUser> callback, Action<Exception> reject)
- {
- MaskAdorner.ShowMask(mainBorder, "鐧婚檰涓�...");
- Task.Run(() =>
- {
- try
- {
- if (GlobalConfig.ClassicLogin)
- {
- callback(null);
- return;
- }
- Result<PdmUser> res = HttpClientCreator.GetSyncAction<PdmUser>("openApi/wpf/simpleLogin", new PdmUser
- {
- username = System.Environment.UserName,
- appId = PluginConst.AppId,
- pluginVersion = PluginConst.Version
- });
- PdmUser user = res.HandleResult();
- user.appId = PluginConst.AppId;
- user.pluginVersion = PluginConst.Version;
- callback(user);
- }
- catch (Exception e)
- {
- reject(e);
- }
- finally
- {
- MaskAdorner.HideMask(mainBorder);
- }
- });
- }
-
/// <summary>
/// 鍔犺浇鎻掍欢涓籘ab
/// </summary>
@@ -196,15 +192,29 @@
{
// 鑷姩鐧诲綍鎴愬姛
clientCreator = new HttpClientCreator();
- tabControl = new TabControl();
- AddPlugin();
- mainBorder.Child = tabControl;
- if (tabControl.Items.Count > 0)
+ if (mainTab == null)
{
- TabItem tabItem = tabControl.Items[0] as TabItem;
+ mainTab = new MainTab(Logout);
+ mainTab.SetSwApp(SwApp);
+ }
+ AddPlugin();
+ mainBorder.Child = mainTab;
+ if (mainTab.tabControl.Items.Count > 0)
+ {
+ TabItem tabItem = mainTab.tabControl.Items[0] as TabItem;
tabItem.Focus();
(tabItem.Content as UIElement).Focus();
}
+ }
+
+ public void Logout()
+ {
+ string binPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData), "HengXin", "PdmSwPlugin", "bin");
+ File.Delete(binPath);
+ DeActiveHandler();
+ mainTab.tabControl.Items.Clear();
+ PdmUser.SetLoginUser(null);
+ mainBorder.Child = new LoginControl(LoginSuccess);
}
public void MainControl_Loaded(object sender, RoutedEventArgs e)
@@ -216,75 +226,19 @@
// 鏈�鍚庢鏌ユ洿鏂�
CheckUpdate();
- AutoLogin(
- (user) =>
- {
- if (user != null)
- {
- Dispatcher.Invoke(() =>
- {
- PdmUser.SetLoginUser(user);
- if (PdmUser.HasLogin())
- {
- LoginSuccess();
- }
- });
- }
- },
- (ex) =>
- {
- Logger.Error("鐧婚檰澶辫触锛�", ex);
- this.Error($"鐧婚檰澶辫触! {ex.Message}");
- });
+ mainBorder.Child = new LoginControl(LoginSuccess);
}
- /// <summary>
- /// 鐧婚檰鐐瑰嚮浜嬩欢
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- MaskAdorner.ShowMask(mainBorder, "鐧婚檰涓�...");
- PdmUser param = new PdmUser
- {
- username = usernameTextBlock.Text,
- password = passwordTextBlock.Password,
- appId = PluginConst.AppId,
- pluginVersion = PluginConst.Version
- };
- Task.Run(() =>
- {
- try
- {
- Result<PdmUser> res = HttpClientCreator.PostSyncAction<PdmUser>("openApi/wpf/login", param);
- PdmUser user = res.HandleResult();
- user.appId = PluginConst.AppId;
- user.pluginVersion = PluginConst.Version;
- Dispatcher.Invoke(() =>
- {
- PdmUser.SetLoginUser(user);
- if (PdmUser.HasLogin())
- {
- LoginSuccess();
- }
- });
- }
- catch (Exception ex)
- {
- Logger.Error("鐧婚檰澶辫触锛�", ex);
- this.Error($"鐧婚檰澶辫触! {ex.Message}");
- }
- finally
- {
- MaskAdorner.HideMask(mainBorder);
- }
- });
- }
+
public void SetSwApp(SldWorks SwApp)
{
this.SwApp = SwApp;
}
+
+ private void self_Unloaded(object sender, RoutedEventArgs e)
+ {
+ StopTcpServer();
+ }
}
}
diff --git a/PdmSwPlugin.Main/MainTab.xaml b/PdmSwPlugin.Main/MainTab.xaml
new file mode 100644
index 0000000..df56dfe
--- /dev/null
+++ b/PdmSwPlugin.Main/MainTab.xaml
@@ -0,0 +1,27 @@
+锘�<UserControl x:Class="PdmSwPlugin.Main.MainTab"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:local="clr-namespace:PdmSwPlugin.Main"
+ mc:Ignorable="d"
+ d:DesignHeight="450" d:DesignWidth="800">
+ <UserControl.Resources>
+ <ResourceDictionary>
+ <ResourceDictionary.MergedDictionaries>
+ <ResourceDictionary Source="/PdmSwPlugin.Common;component/Style/LinkButton.xaml"/>
+ </ResourceDictionary.MergedDictionaries>
+ </ResourceDictionary>
+ </UserControl.Resources>
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition />
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <TabControl Grid.Row="0" x:Name="tabControl"></TabControl>
+ <StatusBar Grid.Row="1" Padding="0" Margin="0" VerticalContentAlignment="Center">
+ <Label x:Name="userLabel" FontWeight="Bold" Padding="0" Margin="0" />
+ <Button Style="{StaticResource LinkButton}" Click="Button_Click">閫�鍑虹櫥褰�</Button>
+ </StatusBar>
+ </Grid>
+</UserControl>
diff --git a/PdmSwPlugin.Main/MainTab.xaml.cs b/PdmSwPlugin.Main/MainTab.xaml.cs
new file mode 100644
index 0000000..b006421
--- /dev/null
+++ b/PdmSwPlugin.Main/MainTab.xaml.cs
@@ -0,0 +1,41 @@
+锘縰sing PdmSwPlugin.Common.Entity.System;
+using PdmSwPlugin.Common.Interface;
+using SolidWorks.Interop.sldworks;
+using System;
+using System.Windows;
+using System.Windows.Controls;
+using SolidWorks.Interop.swconst;
+
+namespace PdmSwPlugin.Main
+{
+ /// <summary>
+ /// MainTab.xaml 鐨勪氦浜掗�昏緫
+ /// </summary>
+ public partial class MainTab : UserControl, ISwAppSetter
+ {
+ private Action logout;
+ public MainTab(Action logout)
+ {
+ this.logout = logout;
+ InitializeComponent();
+ userLabel.Content = $"娆㈣繋鎮紝{PdmUser.LoginUser?.realname}";
+ }
+
+ private SldWorks swApp;
+ public SldWorks SwApp => swApp;
+
+ public void SetSwApp(SldWorks SwApp)
+ {
+ this.swApp = SwApp;
+ }
+
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ if (SwApp.SendMsgToUser2("纭畾閫�鍑虹櫥褰曞悧锛�", (int)swMessageBoxIcon_e.swMbWarning,
+ (int)swMessageBoxBtn_e.swMbYesNo) == (int)swMessageBoxResult_e.swMbHitYes)
+ {
+ logout();
+ }
+ }
+ }
+}
diff --git a/PdmSwPlugin.Main/PdmSwPlugin.Main.csproj b/PdmSwPlugin.Main/PdmSwPlugin.Main.csproj
index dafc2f8..d0c6812 100644
--- a/PdmSwPlugin.Main/PdmSwPlugin.Main.csproj
+++ b/PdmSwPlugin.Main/PdmSwPlugin.Main.csproj
@@ -71,6 +71,18 @@
<HintPath>C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\api\redist\SolidWorks.Interop.swconst.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
+ <Reference Include="SuperSocket.Common">
+ <HintPath>..\lib\SuperSocket.Common.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.Facility">
+ <HintPath>..\lib\SuperSocket.Facility.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.SocketBase">
+ <HintPath>..\lib\SuperSocket.SocketBase.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.SocketEngine">
+ <HintPath>..\lib\SuperSocket.SocketEngine.dll</HintPath>
+ </Reference>
<Reference Include="System">
<Private>True</Private>
</Reference>
@@ -96,17 +108,32 @@
<Compile Include="EventHandler\PartDocEventHandler.cs" />
<Compile Include="EventHandler\DocViewEventHandler.cs" />
<Compile Include="EventHandler\IDocEventHandler.cs" />
+ <Compile Include="LoginControl.xaml.cs">
+ <DependentUpon>LoginControl.xaml</DependentUpon>
+ </Compile>
<Compile Include="MainControl.xaml.cs">
<DependentUpon>MainControl.xaml</DependentUpon>
</Compile>
+ <Compile Include="MainTab.xaml.cs">
+ <DependentUpon>MainTab.xaml</DependentUpon>
+ </Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SwAddIn\MainControl.cs" />
+ <Compile Include="Tcp\TcpReqInfo.cs" />
</ItemGroup>
<ItemGroup>
+ <Page Include="LoginControl.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
<Page Include="MainControl.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
+ <Page Include="MainTab.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
diff --git a/PdmSwPlugin.Main/SwAddIn/MainControl.cs b/PdmSwPlugin.Main/SwAddIn/MainControl.cs
index 6f60026..36758e6 100644
--- a/PdmSwPlugin.Main/SwAddIn/MainControl.cs
+++ b/PdmSwPlugin.Main/SwAddIn/MainControl.cs
@@ -51,7 +51,7 @@
private HttpClientCreator clientCreator { get; set; }
- private TabControl tabControl;
+ private MainTab mainTab;
public MainControl(SldWorks swAddin)
{
@@ -59,6 +59,7 @@
GlobalConfig = PluginSetting.Instance;
InitializeComponent();
self.DataContext = this;
+ InitTcpServer();
}
// 鏈湴璋冭瘯鐢紝杩炴帴SolidWorks
@@ -72,7 +73,7 @@
private void AddPlugin()
{
- tabControl.Items.Clear();
+ mainTab.tabControl.Items.Clear();
SetPluginWithPermission();
//LoadPlugins();
//TestWeb testWeb = new TestWeb();
@@ -90,7 +91,7 @@
{
// 鐗╂枡浼橀��
MaterialSelectControl ms = new MaterialSelectControl(SwApp);
- HandlePlugin(ms, tabControl);
+ HandlePlugin(ms, mainTab.tabControl);
}
if (permissions.Contains("PDM:PLUGIN:CONTROL:PropertySetting"))
{
@@ -98,31 +99,32 @@
if (CustomerSetting.Instance["customer"] == "YWT")
{
CommonSettingControl cs = new CommonSettingControl(SwApp);
- HandlePlugin(cs, tabControl);
+ HandlePlugin(cs, mainTab.tabControl);
+ cs.InitPropertyData();
}
else
{
PropertySettingControl ps = new PropertySettingControl(SwApp);
- HandlePlugin(ps, tabControl);
+ HandlePlugin(ps, mainTab.tabControl);
}
}
if (permissions.Contains("PDM:PLUGIN:CONTROL:PDM"))
{
// PDM
PdmControl pdm = new PdmControl(SwApp);
- HandlePlugin(pdm, tabControl);
+ HandlePlugin(pdm, mainTab.tabControl);
}
if (permissions.Contains("PDM:PLUGIN:CONTROL:PriceCheck"))
{
// 鍔犲伐浠舵牳浠�
PriceCheckControl priceCheck = new PriceCheckControl(SwApp);
- HandlePlugin(priceCheck, tabControl);
+ HandlePlugin(priceCheck, mainTab.tabControl);
}
if (permissions.Contains("PDM:PLUGIN:CONTROL:DrawApprove"))
{
// 鍥剧焊瀹℃牳
DrawApproveControl drawApprove = new DrawApproveControl(SwApp);
- HandlePlugin(drawApprove, tabControl);
+ HandlePlugin(drawApprove, mainTab.tabControl);
/*UserSettingControl userSettingControl = new UserSettingControl();
HandlePlugin(userSettingControl, tabControl);*/
}
@@ -130,7 +132,7 @@
{
// 鍥剧焊瀹℃牳
DrawAuditHisControl drawAuditHisControl = new DrawAuditHisControl(SwApp);
- HandlePlugin(drawAuditHisControl, tabControl);
+ HandlePlugin(drawAuditHisControl, mainTab.tabControl);
/*UserSettingControl userSettingControl = new UserSettingControl();
HandlePlugin(userSettingControl, tabControl);*/
}
@@ -140,19 +142,19 @@
{
// 鐗╂枡浼橀��
MaterialSelectControl ms = new MaterialSelectControl(SwApp);
- HandlePlugin(ms, tabControl);
+ HandlePlugin(ms, mainTab.tabControl);
// 灞炴�ц缃�
PropertySettingControl ps = new PropertySettingControl(SwApp);
- HandlePlugin(ps, tabControl);
+ HandlePlugin(ps, mainTab.tabControl);
// PDM
PdmControl pdm = new PdmControl(SwApp);
- HandlePlugin(pdm, tabControl);
+ HandlePlugin(pdm, mainTab.tabControl);
// 鍔犲伐浠舵牳浠�
PriceCheckControl priceCheck = new PriceCheckControl(SwApp);
- HandlePlugin(priceCheck, tabControl);
+ HandlePlugin(priceCheck, mainTab.tabControl);
// 鍥剧焊瀹℃牳
DrawApproveControl drawApprove = new DrawApproveControl(SwApp);
- HandlePlugin(drawApprove, tabControl);
+ HandlePlugin(drawApprove, mainTab.tabControl);
}
private void LoadPlugins()
@@ -176,7 +178,7 @@
// p.GetInstance(type.FullName);
// 澶勭悊鎻掍欢
HandlePlugin(attr, obj);
- tabControl.Items.Add(new TabItem
+ mainTab.tabControl.Items.Add(new TabItem
{
Header = attr.Title,
Content = obj
@@ -281,6 +283,23 @@
AfterDocDestroy?.Invoke();
}
+ public void DeActiveHandler()
+ {
+ foreach (TabItem item in mainTab.tabControl.Items)
+ {
+ // 鍚戜富Control娉ㄥ唽浜嬩欢
+ if (item.Content is IActiveDocChangeHandler handler)
+ {
+ ActiveDocChangeEvent -= handler.OnSwActiveDocChange;
+ ActiveDocSavedEvent -= handler.OnSwActiveDocSaved;
+ ActiveDocCustomPropertyChange -= handler.OnCustomPropertyChange;
+ DocDestroy -= handler.OnDocDestroy;
+ AfterDocDestroy -= handler.AfterDocDestroy;
+ }
+ }
+ PluginInfos.Clear();
+ }
+
/// <summary>
/// 杩炴帴鍒癝olidWorks涔嬪悗锛屾縺娲讳腑鐨勬枃妗h嚜瀹氫箟灞炴�у彉鏇寸殑鎿嶄綔
/// </summary>
diff --git a/PdmSwPlugin.Main/Tcp/TcpReqInfo.cs b/PdmSwPlugin.Main/Tcp/TcpReqInfo.cs
new file mode 100644
index 0000000..5dc85ec
--- /dev/null
+++ b/PdmSwPlugin.Main/Tcp/TcpReqInfo.cs
@@ -0,0 +1,34 @@
+锘縰sing SuperSocket.SocketBase;
+using SuperSocket.SocketBase.Config;
+using SuperSocket.SocketBase.Protocol;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Timers;
+
+namespace PdmSwPlugin.Main.Tcp
+{
+ public class DTReceiveFilter : ReceiveFilterBase<StringRequestInfo>
+ {
+ public override StringRequestInfo Filter(byte[] readBuffer, int offset, int length, bool toBeCopied, out int rest)
+ {
+ rest = 0;
+ return new StringRequestInfo(DateTime.Now + "", "123", new string[] { "123" });
+ }
+ }
+
+ public class TcpServer : AppServer<TcpSession>
+ {
+ public TcpServer() : base(new DefaultReceiveFilterFactory<DTReceiveFilter, StringRequestInfo>())
+ {
+
+ }
+ }
+
+ public class TcpSession : AppSession<TcpSession, StringRequestInfo>
+ {
+
+ }
+}
diff --git a/PdmSwPlugin.MaterialSelect/PdmSwPlugin.MaterialSelect.csproj b/PdmSwPlugin.MaterialSelect/PdmSwPlugin.MaterialSelect.csproj
index 01e6e67..1f9e6c5 100644
--- a/PdmSwPlugin.MaterialSelect/PdmSwPlugin.MaterialSelect.csproj
+++ b/PdmSwPlugin.MaterialSelect/PdmSwPlugin.MaterialSelect.csproj
@@ -71,10 +71,6 @@
<HintPath>C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\api\redist\SolidWorks.Interop.swconst.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
- <Reference Include="SolidWorks.Interop.swpublished">
- <HintPath>..\..\..\..\..\Program Files\SOLIDWORKS Corp\SOLIDWORKS\api\redist\SolidWorks.Interop.swpublished.dll</HintPath>
- <EmbedInteropTypes>True</EmbedInteropTypes>
- </Reference>
<Reference Include="System">
<Private>True</Private>
</Reference>
diff --git a/PdmSwPlugin.PDM/PdmControl.xaml.cs b/PdmSwPlugin.PDM/PdmControl.xaml.cs
index c57212f..6f5a86b 100644
--- a/PdmSwPlugin.PDM/PdmControl.xaml.cs
+++ b/PdmSwPlugin.PDM/PdmControl.xaml.cs
@@ -36,6 +36,9 @@
using PdmSwPlugin.Commmon.Control;
using PdmSwPlugin.Common.Entity.System;
using System.Windows.Documents;
+using System.Windows.Input;
+using NPOI.POIFS.Properties;
+using NPOI.POIFS.Crypt;
namespace PdmSwPlugin.PDM
{
@@ -1093,6 +1096,128 @@
return allSuccess;
}
+ public void sb(dynamic[] datas) {
+ /*Dictionary<string, DrawInfo> properties = datas[0];
+ string key = datas[1];
+ KeyValuePair<string, DrawInfo> property = datas[2];
+ List<string> temp = datas[3];
+ CountdownEvent counter = datas[4];
+ try
+ {
+
+ int iii, ref bool allSuccess
+
+ Logger.Info($"{key} checking rule...");
+ iii++;
+ Result<DrawInfo> result = Client.PostSyncAction<DrawInfo>(property.Value, "wpf/bom/openApi/checkRuleSingle");
+ DrawInfo checkResult = result.HandleResult();
+ properties[key].checkRuleResult = checkResult.checkRuleResult;
+ properties[key].errMessages = checkResult.errMessages;
+ var msgs = checkResult.errMessages;
+ if (!properties[key].HistoryData && !checkResult.checkRuleOk)
+ {
+ allSuccess = false;
+ }
+
+ if (!properties[key].HistoryData && msgs != null && msgs.Count > 0)
+ {
+ lock (temp)
+ {
+ foreach (string msg in msgs)
+ {
+ temp.Add($"鐗╂枡銆恵key}銆戞湭閫氳繃瑙勫垯妫�鏌ワ紒{msg}");
+ }
+ }
+ }
+ MaskAdorner.ShowMessage(content, $"鐗╂枡銆恵key}銆戞鏌ュ畬鎴�");
+ }
+ catch (Exception ex)
+ {
+ properties[key].checkRuleResult = 2;
+ properties[key].errMessages = new List<string> { "鍙戣捣妫�鏌ュけ璐ワ紝璇烽噸璇�" };
+ lock (temp)
+ {
+ temp.Add($"鐗╂枡銆恵key}銆戝彂璧锋鏌ュけ璐ワ紝璇烽噸璇�");
+ }
+ allSuccess = false;
+ MaskAdorner.ShowMessage(content, $"鐗╂枡銆恵key}銆戞鏌ュ畬鎴�");
+ }
+ finally
+ {
+ counter.Signal();
+ }*/
+ }
+
+ public bool DoCheckRuleAsync(out List<string> messages)
+ {
+ var temp = new List<string>();
+ bool allSuccess = true;
+ Dictionary<string, DrawInfo> properties = GetAllProperties(temp);
+ MaskAdorner.ShowMessage(content, "姝e湪璇锋眰鏁版嵁...");
+ var factory = LimitedConcurrencyLevelTaskScheduler.Factory;
+ CountdownEvent counter = new CountdownEvent(properties.Count);
+ int iii = 1;
+ foreach (KeyValuePair<string, DrawInfo> property in properties)
+ {
+ string key = property.Key;
+ _ = ThreadPool.QueueUserWorkItem(
+ (WaitCallback)delegate
+ {
+
+ try
+ {
+ Logger.Error($"{key} checking rule...");
+ iii++;
+ Result<DrawInfo> result = Client.PostSyncAction<DrawInfo>(property.Value, "wpf/bom/openApi/checkRuleSingle");
+ DrawInfo checkResult = result.HandleResult();
+ properties[key].checkRuleResult = checkResult.checkRuleResult;
+ properties[key].errMessages = checkResult.errMessages;
+ var msgs = checkResult.errMessages;
+ if (!properties[key].HistoryData && !checkResult.checkRuleOk)
+ {
+ allSuccess = false;
+ }
+
+ if (!properties[key].HistoryData && msgs != null && msgs.Count > 0)
+ {
+ lock (temp)
+ {
+ foreach (string msg in msgs)
+ {
+ temp.Add($"鐗╂枡銆恵key}銆戞湭閫氳繃瑙勫垯妫�鏌ワ紒{msg}");
+ }
+ }
+ }
+ MaskAdorner.ShowMessage(content, $"鐗╂枡銆恵key}銆戞鏌ュ畬鎴�");
+ }
+ catch (Exception ex)
+ {
+ properties[key].checkRuleResult = 2;
+ properties[key].errMessages = new List<string> { "鍙戣捣妫�鏌ュけ璐ワ紝璇烽噸璇�" };
+ lock (temp)
+ {
+ temp.Add($"鐗╂枡銆恵key}銆戝彂璧锋鏌ュけ璐ワ紝璇烽噸璇�");
+ }
+ allSuccess = false;
+ MaskAdorner.ShowMessage(content, $"鐗╂枡銆恵key}銆戞鏌ュ畬鎴�");
+ }
+ finally
+ {
+ counter.Signal();
+ }
+ });
+
+ /* factory.StartNew(() =>
+ {
+
+ });*/
+ }
+ counter.Wait();
+ counter.Dispose();
+ messages = temp;
+ return allSuccess;
+ }
+
private void ShowExWindow(MultiExWindow exWin)
{
IntPtr winformWindow = Process.GetCurrentProcess().MainWindowHandle;
@@ -1688,6 +1813,10 @@
{
// 鎵ц瑙勫垯妫�鏌ュ苟鑾峰彇缁撴灉
RefreshBomList(SwApp.IActiveDoc2);
+ if (model.bomTreeReader.CacheList.Count <= 0)
+ {
+ throw new CantCheckInException(new List<string> { "璇锋墦寮�涓�寮犲浘绾�" });
+ }
DoCheckRule(out _);
// 绛涢�夋墍鏈夊湪鐗╂枡鏄庣粏琛ㄤ腑锛屼笉璺宠繃妫�鏌ュ苟涓旀鏌ユ湭閫氳繃鐨勶紝绫诲瀷鏄姞宸ヤ欢鐨勬湭閫氳繃瀹℃牳鐨勶紝鍔犲伐浠跺鏍搁�氳繃鐨勪絾鍥剧焊鍙樻洿鐨�
List<string> errs = model.bomTreeReader.CacheList.Select(b => b.NeedStopCheckIn())
diff --git a/PdmSwPlugin.PDM/PdmSwPlugin.PDM.csproj b/PdmSwPlugin.PDM/PdmSwPlugin.PDM.csproj
index 96a5126..2ab1039 100644
--- a/PdmSwPlugin.PDM/PdmSwPlugin.PDM.csproj
+++ b/PdmSwPlugin.PDM/PdmSwPlugin.PDM.csproj
@@ -104,10 +104,6 @@
<Reference Include="SixLabors.ImageSharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d998eea7b14cab13, processorArchitecture=MSIL">
<HintPath>..\PdmSw\packages\SixLabors.ImageSharp.2.1.3\lib\net472\SixLabors.ImageSharp.dll</HintPath>
</Reference>
- <Reference Include="SolidWorks.Interop.gtswutilities">
- <HintPath>..\..\..\..\..\Program Files\SOLIDWORKS Corp\SOLIDWORKS\api\redist\SolidWorks.Interop.gtswutilities.dll</HintPath>
- <EmbedInteropTypes>True</EmbedInteropTypes>
- </Reference>
<Reference Include="SolidWorks.Interop.sldworks">
<HintPath>C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\api\redist\SolidWorks.Interop.sldworks.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
diff --git a/PdmSwPlugin.PropertySetting/CommonSettingControl.xaml b/PdmSwPlugin.PropertySetting/CommonSettingControl.xaml
index e33ee0a..3d9ebbc 100644
--- a/PdmSwPlugin.PropertySetting/CommonSettingControl.xaml
+++ b/PdmSwPlugin.PropertySetting/CommonSettingControl.xaml
@@ -3,7 +3,6 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- Initialized="PropertySettingControl_Initialized"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
diff --git a/PdmSwPlugin.PropertySetting/CommonSettingControl.xaml.cs b/PdmSwPlugin.PropertySetting/CommonSettingControl.xaml.cs
index 2b8cc6e..4076f04 100644
--- a/PdmSwPlugin.PropertySetting/CommonSettingControl.xaml.cs
+++ b/PdmSwPlugin.PropertySetting/CommonSettingControl.xaml.cs
@@ -232,7 +232,7 @@
this.SwApp = SwApp;
}
- private void InitPropertyData()
+ public void InitPropertyData()
{
if (Client == null)
{
@@ -461,24 +461,41 @@
else if (docType == (int)swDocumentTypes_e.swDocASSEMBLY)
{
ReadDocPath = ReadDoc.GetPathName();
- // !Equals(LastReadDoc, ReadDoc)
- properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, skipName);
- string fileType = properties.Get(NameConstant.docType);
- /*if (fileType == "鍔犲伐浠�" || fileType == "妯$粍")
+ if (ReadDoc.IsOpenedViewOnly())
{
- contentKey = "jgjPart";
- }*/
- if (BomIniterHolder.Instance.IsJgj(ReadDoc))
+ contentKey = "default";
+ control = controlCache[contentKey];
+ newOne = control as IPropertyOpt;
+ newOne.SetProperties(null, "褰撳墠澶勪簬鍙妯″紡", true, out _);
+ }
+ else if (ReadDoc.IsOpenedReadOnly())
{
- contentKey = "jgjModule";
+ contentKey = "default";
+ control = controlCache[contentKey];
+ newOne = control as IPropertyOpt;
+ newOne.SetProperties(null, "褰撳墠澶勪簬鍙妯″紡", true, out _);
}
else
{
- contentKey = "standardModule";
+ // !Equals(LastReadDoc, ReadDoc)
+ properties = CustomPropertyUtil.GetCustomProperties2(ReadDoc, true, skipName);
+ string fileType = properties.Get(NameConstant.docType);
+ /*if (fileType == "鍔犲伐浠�" || fileType == "妯$粍")
+ {
+ contentKey = "jgjPart";
+ }*/
+ if (BomIniterHolder.Instance.IsJgj(ReadDoc))
+ {
+ contentKey = "jgjModule";
+ }
+ else
+ {
+ contentKey = "standardModule";
+ }
+ control = controlCache[contentKey];
+ newOne = control as IPropertyOpt;
+ newOne.SetProperties(ReadDoc, properties, true, out _);
}
- control = controlCache[contentKey];
- newOne = control as IPropertyOpt;
- newOne.SetProperties(ReadDoc, properties, true, out _);
}
else
{
diff --git a/PluginLisener/.vs/PluginLisener.csproj.dtbcache.json b/PluginLisener/.vs/PluginLisener.csproj.dtbcache.json
new file mode 100644
index 0000000..542b22f
--- /dev/null
+++ b/PluginLisener/.vs/PluginLisener.csproj.dtbcache.json
@@ -0,0 +1 @@
+{"RootPath":"D:\\Workspace\\PdmSwPlugin2\\PluginLisener","ProjectFileName":"PluginLisener.csproj","Configuration":"Debug|x64","FrameworkPath":"","Sources":[{"SourceFile":"PluginLisener.cs"},{"SourceFile":"PluginLisener.Designer.cs"},{"SourceFile":"Program.cs"},{"SourceFile":"ProjectInstaller.cs"},{"SourceFile":"ProjectInstaller.Designer.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"obj\\x64\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"}],"References":[{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\packages\\HtmlToXamlConverter.1.0.5727.24510\\lib\\net45\\HtmlToXamlConverter.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Configuration.Install.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Management.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.ServiceProcess.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\bin\\x64\\Debug\\PluginLisener.exe","OutputItemRelativePath":"PluginLisener.exe"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]}
\ No newline at end of file
diff --git a/PluginLisener/.vs/PluginLisener/v17/DocumentLayout.backup.json b/PluginLisener/.vs/PluginLisener/v17/DocumentLayout.backup.json
new file mode 100644
index 0000000..278ef01
--- /dev/null
+++ b/PluginLisener/.vs/PluginLisener/v17/DocumentLayout.backup.json
@@ -0,0 +1,53 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{08B29115-BDDE-43E6-9E6B-EB6DC75B35D9}|PluginLisener.csproj|d:\\workspace\\pdmswplugin2\\pluginlisener\\pluginlisener.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{08B29115-BDDE-43E6-9E6B-EB6DC75B35D9}|PluginLisener.csproj|solutionrelative:pluginlisener.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{08B29115-BDDE-43E6-9E6B-EB6DC75B35D9}|PluginLisener.csproj|D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{08B29115-BDDE-43E6-9E6B-EB6DC75B35D9}|PluginLisener.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": 0,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "PluginLisener.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\PluginLisener.cs",
+ "RelativeDocumentMoniker": "PluginLisener.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\PluginLisener.cs",
+ "RelativeToolTip": "PluginLisener.cs",
+ "ViewState": "AgIAAAYAAAAAAAAAAAAAAA8AAABBAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-08-23T08:16:41.952Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 1,
+ "Title": "Program.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\Program.cs",
+ "RelativeDocumentMoniker": "Program.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\Program.cs",
+ "RelativeToolTip": "Program.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAAhAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-08-23T08:16:20.579Z"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/PluginLisener/.vs/PluginLisener/v17/DocumentLayout.json b/PluginLisener/.vs/PluginLisener/v17/DocumentLayout.json
new file mode 100644
index 0000000..bec89d4
--- /dev/null
+++ b/PluginLisener/.vs/PluginLisener/v17/DocumentLayout.json
@@ -0,0 +1,71 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\",
+ "Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{08B29115-BDDE-43E6-9E6B-EB6DC75B35D9}|PluginLisener.csproj|d:\\workspace\\pdmswplugin2\\pluginlisener\\pluginlisener.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{08B29115-BDDE-43E6-9E6B-EB6DC75B35D9}|PluginLisener.csproj|solutionrelative:pluginlisener.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{08B29115-BDDE-43E6-9E6B-EB6DC75B35D9}|PluginLisener.csproj|d:\\workspace\\pdmswplugin2\\pluginlisener\\pluginlisener.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{08B29115-BDDE-43E6-9E6B-EB6DC75B35D9}|PluginLisener.csproj|solutionrelative:pluginlisener.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{08B29115-BDDE-43E6-9E6B-EB6DC75B35D9}|PluginLisener.csproj|D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{08B29115-BDDE-43E6-9E6B-EB6DC75B35D9}|PluginLisener.csproj|solutionrelative:program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ }
+ ],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": [
+ {
+ "DockedWidth": 200,
+ "SelectedChildIndex": 1,
+ "Children": [
+ {
+ "$type": "Document",
+ "DocumentIndex": 1,
+ "Title": "PluginLisener.Designer.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\PluginLisener.Designer.cs",
+ "RelativeDocumentMoniker": "PluginLisener.Designer.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\PluginLisener.Designer.cs",
+ "RelativeToolTip": "PluginLisener.Designer.cs",
+ "ViewState": "AgIAABMAAAAAAAAAAAAgwB4AAAArAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-09-12T08:38:16.635Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 0,
+ "Title": "PluginLisener.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\PluginLisener.cs",
+ "RelativeDocumentMoniker": "PluginLisener.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\PluginLisener.cs",
+ "RelativeToolTip": "PluginLisener.cs",
+ "ViewState": "AgIAABgAAAAAAAAAAAAowBEAAAAIAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-08-23T08:16:41.952Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 2,
+ "Title": "Program.cs",
+ "DocumentMoniker": "D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\Program.cs",
+ "RelativeDocumentMoniker": "Program.cs",
+ "ToolTip": "D:\\Workspace\\PdmSwPlugin2\\PluginLisener\\Program.cs",
+ "RelativeToolTip": "Program.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAdAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2024-08-23T08:16:20.579Z",
+ "EditorCaption": ""
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/PluginLisener/App.config b/PluginLisener/App.config
new file mode 100644
index 0000000..56efbc7
--- /dev/null
+++ b/PluginLisener/App.config
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
+ </startup>
+</configuration>
\ No newline at end of file
diff --git a/PluginLisener/PluginLisener.Designer.cs b/PluginLisener/PluginLisener.Designer.cs
new file mode 100644
index 0000000..0122ad4
--- /dev/null
+++ b/PluginLisener/PluginLisener.Designer.cs
@@ -0,0 +1,38 @@
+锘縩amespace PluginLisener
+{
+ partial class PluginLisener
+ {
+ /// <summary>
+ /// 蹇呴渶鐨勮璁″櫒鍙橀噺銆�
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// 娓呯悊鎵�鏈夋鍦ㄤ娇鐢ㄧ殑璧勬簮銆�
+ /// </summary>
+ /// <param name="disposing">濡傛灉搴旈噴鏀炬墭绠¤祫婧愶紝涓� true锛涘惁鍒欎负 false銆�</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region 缁勪欢璁捐鍣ㄧ敓鎴愮殑浠g爜
+
+ /// <summary>
+ /// 璁捐鍣ㄦ敮鎸佹墍闇�鐨勬柟娉� - 涓嶈淇敼
+ /// 浣跨敤浠g爜缂栬緫鍣ㄤ慨鏀规鏂规硶鐨勫唴瀹广��
+ /// </summary>
+ private void InitializeComponent()
+ {
+ components = new System.ComponentModel.Container();
+ this.ServiceName = "PdmSwPluginLisener";
+ this.CanStop = true;
+ }
+
+ #endregion
+ }
+}
diff --git a/PluginLisener/PluginLisener.cs b/PluginLisener/PluginLisener.cs
new file mode 100644
index 0000000..ac4a312
--- /dev/null
+++ b/PluginLisener/PluginLisener.cs
@@ -0,0 +1,56 @@
+锘縰sing System.Runtime.InteropServices;
+using System;
+using System.ServiceProcess;
+using System.Collections.Generic;
+using SolidWorks.Interop.sldworks;
+
+namespace PluginLisener
+{
+ public partial class PluginLisener : ServiceBase
+ {
+ public PluginLisener()
+ {
+ InitializeComponent();
+ }
+
+ private List<SldWorks> processIds = new List<SldWorks>();
+
+ public static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;
+
+ protected override void OnStart(string[] args)
+ {
+ var SwApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application");
+ int resp = 0;
+ WTSSendMessage(
+ WTS_CURRENT_SERVER_HANDLE,
+ WTSGetActiveConsoleSessionId(),//鑾峰緱褰撳墠鏄剧ず鐨勬闈㈡墍鍦ㄧ殑SessionID
+ "title", "title".Length,
+ "message", "message".Length,
+ 0, 0, out resp, false);
+ }
+
+ public void StartScan() {
+
+ }
+
+ protected override void OnStop()
+ {
+ }
+
+ [DllImport("kernel32.dll", SetLastError = true)]
+ public static extern int WTSGetActiveConsoleSessionId();
+
+ [DllImport("wtsapi32.dll", SetLastError = true)]
+ public static extern bool WTSSendMessage( //涓�涓猄ession涓殑杩涚▼鍙互鐢╓TSSendMessage锛岃鍙︿竴涓猄ession寮瑰嚭瀵硅瘽妗�
+聽 聽 聽 聽 聽 聽 IntPtr hServer,
+ int SessionId,
+ String pTitle,
+ int TitleLength,
+ String pMessage,
+ int MessageLength,
+ int Style,
+ int Timeout,
+ out int pResponse,
+ bool bWait);
+ }
+}
diff --git a/PluginLisener/PluginLisener.csproj b/PluginLisener/PluginLisener.csproj
new file mode 100644
index 0000000..36116cd
--- /dev/null
+++ b/PluginLisener/PluginLisener.csproj
@@ -0,0 +1,107 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{08B29115-BDDE-43E6-9E6B-EB6DC75B35D9}</ProjectGuid>
+ <OutputType>WinExe</OutputType>
+ <RootNamespace>PluginLisener</RootNamespace>
+ <AssemblyName>PluginLisener</AssemblyName>
+ <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ <Deterministic>true</Deterministic>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\x64\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <DebugType>full</DebugType>
+ <PlatformTarget>x64</PlatformTarget>
+ <LangVersion>7.3</LangVersion>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+ <OutputPath>bin\x64\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <Optimize>true</Optimize>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>x64</PlatformTarget>
+ <LangVersion>7.3</LangVersion>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="HtmlToXamlConverter, Version=1.0.5727.24510, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>packages\HtmlToXamlConverter.1.0.5727.24510\lib\net45\HtmlToXamlConverter.dll</HintPath>
+ </Reference>
+ <Reference Include="SolidWorks.Interop.sldworks">
+ <HintPath>C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\api\redist\SolidWorks.Interop.sldworks.dll</HintPath>
+ <EmbedInteropTypes>True</EmbedInteropTypes>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Configuration.Install" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Management" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.ServiceProcess" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="PluginLisener.cs">
+ <SubType>Component</SubType>
+ </Compile>
+ <Compile Include="PluginLisener.Designer.cs">
+ <DependentUpon>PluginLisener.cs</DependentUpon>
+ </Compile>
+ <Compile Include="Program.cs" />
+ <Compile Include="ProjectInstaller.cs">
+ <SubType>Component</SubType>
+ </Compile>
+ <Compile Include="ProjectInstaller.Designer.cs">
+ <DependentUpon>ProjectInstaller.cs</DependentUpon>
+ </Compile>
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ <None Include="packages.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <EmbeddedResource Include="ProjectInstaller.resx">
+ <DependentUpon>ProjectInstaller.cs</DependentUpon>
+ </EmbeddedResource>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <PropertyGroup>
+ <PostBuildEvent>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe "$(TargetFileName)" & net start PdmSwPluginLisener</PostBuildEvent>
+ </PropertyGroup>
+ <PropertyGroup>
+ <PreBuildEvent>sc delete PdmSwPluginLisener</PreBuildEvent>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/PluginLisener/Program.cs b/PluginLisener/Program.cs
new file mode 100644
index 0000000..98dce27
--- /dev/null
+++ b/PluginLisener/Program.cs
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.ServiceProcess;
+
+namespace PluginLisener
+{
+ internal static class Program
+ {
+ /// <summary>
+ /// 搴旂敤绋嬪簭鐨勪富鍏ュ彛鐐广��
+ /// </summary>
+ static void Main()
+ {
+ ServiceBase[] ServicesToRun;
+ ServicesToRun = new ServiceBase[]
+ {
+ new PluginLisener()
+ };
+ ServiceBase.Run(ServicesToRun);
+ }
+ }
+}
diff --git a/PluginLisener/ProjectInstaller.Designer.cs b/PluginLisener/ProjectInstaller.Designer.cs
new file mode 100644
index 0000000..34b0841
--- /dev/null
+++ b/PluginLisener/ProjectInstaller.Designer.cs
@@ -0,0 +1,56 @@
+锘縩amespace PluginLisener
+{
+ partial class ProjectInstaller
+ {
+ /// <summary>
+ /// 蹇呴渶鐨勮璁″櫒鍙橀噺銆�
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// 娓呯悊鎵�鏈夋鍦ㄤ娇鐢ㄧ殑璧勬簮銆�
+ /// </summary>
+ /// <param name="disposing">濡傛灉搴旈噴鏀炬墭绠¤祫婧愶紝涓� true锛涘惁鍒欎负 false銆�</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region 缁勪欢璁捐鍣ㄧ敓鎴愮殑浠g爜
+
+ /// <summary>
+ /// 璁捐鍣ㄦ敮鎸佹墍闇�鐨勬柟娉� - 涓嶈淇敼
+ /// 浣跨敤浠g爜缂栬緫鍣ㄤ慨鏀规鏂规硶鐨勫唴瀹广��
+ /// </summary>
+ private void InitializeComponent()
+ {
+ this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
+ this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
+ //
+ // serviceProcessInstaller1
+ //
+ this.serviceProcessInstaller1.Password = null;
+ this.serviceProcessInstaller1.Username = null;
+ //
+ // serviceInstaller1
+ //
+ this.serviceInstaller1.ServiceName = "PdmSwPluginLisener";
+ //
+ // ProjectInstaller
+ //
+ this.Installers.AddRange(new System.Configuration.Install.Installer[] {
+ this.serviceProcessInstaller1,
+ this.serviceInstaller1});
+
+ }
+
+ #endregion
+
+ private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
+ private System.ServiceProcess.ServiceInstaller serviceInstaller1;
+ }
+}
\ No newline at end of file
diff --git a/PluginLisener/ProjectInstaller.cs b/PluginLisener/ProjectInstaller.cs
new file mode 100644
index 0000000..c03a476
--- /dev/null
+++ b/PluginLisener/ProjectInstaller.cs
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Configuration.Install;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace PluginLisener
+{
+ [RunInstaller(true)]
+ public partial class ProjectInstaller : System.Configuration.Install.Installer
+ {
+ public ProjectInstaller()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/PluginLisener/ProjectInstaller.resx b/PluginLisener/ProjectInstaller.resx
new file mode 100644
index 0000000..77c2810
--- /dev/null
+++ b/PluginLisener/ProjectInstaller.resx
@@ -0,0 +1,129 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <metadata name="serviceProcessInstaller1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>17, 17</value>
+ </metadata>
+ <metadata name="serviceInstaller1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>210, 17</value>
+ </metadata>
+ <metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <value>False</value>
+ </metadata>
+</root>
\ No newline at end of file
diff --git a/PluginLisener/Properties/AssemblyInfo.cs b/PluginLisener/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..c40035b
--- /dev/null
+++ b/PluginLisener/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 鏈夊叧绋嬪簭闆嗙殑涓�鑸俊鎭敱浠ヤ笅
+// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("PluginLisener")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("PluginLisener")]
+[assembly: AssemblyCopyright("Copyright 漏 2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷
+//瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷
+//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID
+[assembly: Guid("08b29115-bdde-43e6-9e6b-eb6dc75b35d9")]
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鐢熸垚鍙�
+// 淇鍙�
+//
+//鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊�
+//閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/PluginLisener/packages.config b/PluginLisener/packages.config
new file mode 100644
index 0000000..28540c5
--- /dev/null
+++ b/PluginLisener/packages.config
@@ -0,0 +1,4 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="HtmlToXamlConverter" version="1.0.5727.24510" targetFramework="net472" />
+</packages>
\ No newline at end of file
diff --git a/PluginListener/.vs/PluginListener/v17/DocumentLayout.json b/PluginListener/.vs/PluginListener/v17/DocumentLayout.json
new file mode 100644
index 0000000..575c336
--- /dev/null
+++ b/PluginListener/.vs/PluginListener/v17/DocumentLayout.json
@@ -0,0 +1,12 @@
+{
+ "Version": 1,
+ "WorkspaceRootPath": "D:\\Workspace\\PdmSwPlugin2\\PluginListener\\",
+ "Documents": [],
+ "DocumentGroupContainers": [
+ {
+ "Orientation": 0,
+ "VerticalTabListWidth": 256,
+ "DocumentGroups": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/PluginListener/Alert.xaml b/PluginListener/Alert.xaml
new file mode 100644
index 0000000..6b0bef4
--- /dev/null
+++ b/PluginListener/Alert.xaml
@@ -0,0 +1,15 @@
+锘�<Window x:Class="PluginListener.Alert"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:local="clr-namespace:Test1"
+ mc:Ignorable="d"
+ ShowInTaskbar="False"
+ Topmost="True" Height="Auto" Width="Auto"
+ Title="鎻愮ず">
+ <StackPanel HorizontalAlignment="Center">
+ <Label x:Name="label"/>
+ <Button Click="Button_Click">纭</Button>
+ </StackPanel>
+</Window>
diff --git a/PluginListener/Alert.xaml.cs b/PluginListener/Alert.xaml.cs
new file mode 100644
index 0000000..35a8f67
--- /dev/null
+++ b/PluginListener/Alert.xaml.cs
@@ -0,0 +1,49 @@
+锘縰sing System.Windows;
+namespace PluginListener
+{
+ /// <summary>
+ /// Alert.xaml 鐨勪氦浜掗�昏緫
+ /// </summary>
+ public partial class Alert : Window
+ {
+ public Alert()
+ {
+ InitializeComponent();
+ }
+
+ public void Open(string msg)
+ {
+ Dispatcher.Invoke(() =>
+ {
+ label.Content = msg;
+ this.Show();
+ });
+ }
+
+ public void DoHide()
+ {
+ Dispatcher.Invoke(() =>
+ {
+ this.Hide();
+ });
+ }
+
+ public void DoClose()
+ {
+ Dispatcher.Invoke(() =>
+ {
+ this.Close();
+ });
+ }
+
+ protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
+ {
+ e.Cancel = true;
+ }
+
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ this.Hide();
+ }
+ }
+}
diff --git a/PluginListener/App.config b/PluginListener/App.config
new file mode 100644
index 0000000..eb01fae
--- /dev/null
+++ b/PluginListener/App.config
@@ -0,0 +1,9 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
+ </startup>
+ <connectionStrings>
+ <add name="DefaultConnection" connectionString="Data Source = |SQL/CE|" />
+ </connectionStrings>
+</configuration>
\ No newline at end of file
diff --git a/PluginListener/Intercepter.cs b/PluginListener/Intercepter.cs
new file mode 100644
index 0000000..d78fe00
--- /dev/null
+++ b/PluginListener/Intercepter.cs
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Test1
+{
+ public class Intercepter
+ {
+ private Task importListenTask;
+ private Task checkInListenTask;
+
+ private CancellationTokenSource cts;
+
+ public Intercepter(Action callback1, Action callback2)
+ {
+ cts = new CancellationTokenSource();
+ /// 鍚姩瀵煎叆鎷︽埅
+ importListenTask = Task.Run(() =>
+ {
+ while (!cts.IsCancellationRequested)
+ {
+ Debug.WriteLine("inter Import");
+ // 鐩戝惉瀵煎叆鎻掍欢鐨勫惎鍔�
+ callback1();
+ Thread.Sleep(30);
+ }
+ });
+ /// 鍚姩妫�鍏ユ嫤鎴�
+ checkInListenTask = Task.Run(() =>
+ {
+ while (!cts.IsCancellationRequested)
+ {
+ Debug.WriteLine("inter CheckIn");
+ // 鐩戝惉妫�鍏ユ彃浠剁殑鍚姩
+ callback2();
+ Thread.Sleep(30);
+ }
+ });
+ }
+
+ public void StopIntercept()
+ {
+ cts.Cancel();
+ }
+ }
+}
diff --git a/PluginListener/Listener.cs b/PluginListener/Listener.cs
new file mode 100644
index 0000000..630cc14
--- /dev/null
+++ b/PluginListener/Listener.cs
@@ -0,0 +1,392 @@
+锘縰sing log4net;
+using SolidWorks.Interop.sldworks;
+using SolidWorks.Interop.swconst;
+using SuperSocket.ClientEngine;
+using System;
+using System.Diagnostics;
+using System.Net;
+using System.Runtime.InteropServices;
+using System.ServiceProcess;
+using System.Text;
+using System.Timers;
+using System.Windows;
+using Test1;
+
+namespace PluginListener
+{
+ public class Listener : ServiceBase
+ {
+ ILog log = LogManager.GetLogger("Listener");
+ private AsyncTcpSession client;
+
+ private long err_count;
+
+ private System.Timers.Timer socketTimer;
+ private System.Timers.Timer importTimer;
+ private System.Timers.Timer checkInTimer;
+
+ private Alert alert;
+ private volatile int is_open = int.MaxValue;
+
+ private int msgInterval = 5000;
+
+ #region 娑堟伅
+ public static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;
+
+ public void ShowMessageBox(string message, string title)
+ {
+ /*if (is_open == 0)
+ {
+ return;
+ }*/
+ is_open = 0;
+ int res;
+ WTSSendMessage(
+ WTS_CURRENT_SERVER_HANDLE,
+ WTSGetActiveConsoleSessionId(),
+ title, title.Length,
+ message, message.Length,
+ 0, 0, out res, true);
+ is_open = res;
+ }
+
+ [DllImport("kernel32.dll", SetLastError = true)]
+ public static extern int WTSGetActiveConsoleSessionId();
+
+ [DllImport("wtsapi32.dll", SetLastError = true)]
+ public static extern bool WTSSendMessage(
+ IntPtr hServer,
+ int SessionId,
+ String pTitle,
+ int TitleLength,
+ String pMessage,
+ int MessageLength,
+ int Style,
+ int Timeout,
+ out int pResponse,
+ bool bWait);
+ #endregion
+
+
+ #region 缁勪欢璁捐鍣ㄧ敓鎴愮殑浠g爜
+ /// <summary>
+ /// 蹇呴渶鐨勮璁″櫒鍙橀噺銆�
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// 娓呯悊鎵�鏈夋鍦ㄤ娇鐢ㄧ殑璧勬簮銆�
+ /// </summary>
+ /// <param name="disposing">濡傛灉搴旈噴鏀炬墭绠¤祫婧愶紝涓� true锛涘惁鍒欎负 false銆�</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ /// <summary>
+ /// 璁捐鍣ㄦ敮鎸佹墍闇�鐨勬柟娉� - 涓嶈淇敼
+ /// 浣跨敤浠g爜缂栬緫鍣ㄤ慨鏀规鏂规硶鐨勫唴瀹广��
+ /// </summary>
+ private void InitializeComponent()
+ {
+ components = new System.ComponentModel.Container();
+ this.ServiceName = "PdmSwPluginLisener";
+ this.CanStop = true;
+ }
+ #endregion
+
+ private void AlertMsg(string msg)
+ {
+ /// 鍐呯疆WPF鐨� 涓嶈兘鐢�
+ // alert.Open(msg);
+
+ /*try
+ {
+ // SwApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application.28");
+ var swApp = (SldWorks)System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application");
+ swApp.SendMsgToUser2(msg, (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk);
+ Marshal.ReleaseComObject(swApp);
+ }
+ catch (COMException ex)
+ {
+ log.Error("Attach Sw Failed.", ex);
+ }*/
+
+ WinAPI_Interop.ShowServiceMessage(msg, "鎻愮ず");
+ // ShowMessageBox(msg, "鎻愮ず");
+
+ /// 鐢∕essageBox鐨� 涓嶈兘鐢�
+ /*if (swApp == null)
+ {
+ int res;
+ WTSSendMessage(
+ WTS_CURRENT_SERVER_HANDLE,
+ WTSGetActiveConsoleSessionId(),//鑾峰緱褰撳墠鏄剧ず鐨勬闈㈡墍鍦ㄧ殑SessionID
+ "鎻愮ず", "鎻愮ず".Length,
+ msg, msg.Length,
+ 0, 0, out res, false);
+ }
+ else
+ {
+ swApp.SendMsgToUser2(msg, (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk);
+ }*/
+
+ //
+
+ ///鍚姩exe鐨�
+ /*ProcessStartInfo psi = new ProcessStartInfo
+ {
+ FileName = "AlertWindow.exe",
+ UseShellExecute = false,
+ CreateNoWindow = true
+ };
+ Process process = Process.Start(psi);*/
+ }
+
+ public Listener()
+ {
+ alert = new Alert();
+ client = new AsyncTcpSession();
+ client.Connected += Client_Connected;
+ client.Error += Client_Error;
+ client.Closed += Client_Closed;
+ client.DataReceived += Client_DataReceived;
+ InitializeComponent();
+ log.Info("Service Started.");
+ }
+
+ protected override void OnStart(string[] args)
+ {
+ Start();
+ }
+
+ protected override void OnStop()
+ {
+ Stop();
+ }
+
+ public void Start()
+ {
+ InitSocketTimer();
+ }
+
+ public void Stop()
+ {
+ socketTimer?.Stop();
+ StopInterceptTimer();
+ // alert.DoClose();
+ // if (intercepter != null) intercepter.StopIntercept();
+ }
+
+ /// <summary>
+ /// 鍚姩Socket瀹氭椂鍣�
+ /// </summary>
+ public void InitSocketTimer()
+ {
+ log.Info("Starting Socket Timer...");
+ socketTimer = new System.Timers.Timer(msgInterval);
+ socketTimer.Elapsed += Timer_Elapsed;
+ socketTimer.Enabled = true;
+ socketTimer.Start();
+ log.Info("Started Socket Timer!");
+ }
+
+ /// <summary>
+ /// 鍚姩閲戣澏鎷︽埅浠诲姟
+ /// </summary>
+ public void StartInterceptTimer()
+ {
+ // if (intercepter == null) intercepter = new Intercepter(ListenImportHandle, ListenCheckInHandle);
+ if (importTimer == null)
+ {
+ importTimer = new System.Timers.Timer(500);
+ importTimer.Elapsed += ImportTimer_Elapsed;
+ }
+ importTimer.Start();
+ if (checkInTimer == null)
+ {
+ checkInTimer = new System.Timers.Timer(500);
+ checkInTimer.Elapsed += CheckInTimer_Elapsed;
+ }
+ checkInTimer.Start();
+ }
+
+ private void ImportTimer_Elapsed(object sender, ElapsedEventArgs e)
+ {
+ lock (importTimer)
+ {
+ ListenImportHandle();
+ }
+ }
+
+ private void CheckInTimer_Elapsed(object sender, ElapsedEventArgs e)
+ {
+ lock (checkInTimer)
+ {
+ ListenCheckInHandle();
+ }
+ }
+
+ /// <summary>
+ /// 鍋滄閲戣澏鎷︽埅浠诲姟
+ /// </summary>
+ private void StopInterceptTimer()
+ {
+ /*if (intercepter != null)
+ {
+ intercepter.StopIntercept();
+ intercepter = null;
+ }*/
+ importTimer?.Stop();
+ checkInTimer?.Stop();
+ }
+
+ /// <summary>
+ /// 鎻掍欢杩斿洖姝e父鏃剁殑澶勭悊
+ /// </summary>
+ private void HandleNormal()
+ {
+ err_count = 0;
+ StopInterceptTimer();
+ // alert.DoHide();
+ }
+
+ private bool IsSwRunning()
+ {
+ Process[] ps = Process.GetProcessesByName("SLDWORKS");
+ bool IsRunning = (ps != null && ps.Length > 0);
+ log.Debug($"Sw Is Running: {IsRunning}");
+ return IsRunning;
+ }
+
+ /// <summary>
+ /// 鎻掍欢杩斿洖寮傚父鏃剁殑澶勭悊
+ /// </summary>
+ private void HandleErr()
+ {
+ log.Debug($"err_count: {err_count}");
+ if (++err_count > 3)
+ {
+ if (IsSwRunning())
+ {
+ // 濡傛灉solidworks鍚姩
+ StartInterceptTimer();
+ log.Debug("Ready to show Msg.");
+ AlertMsg("璇峰惎鐢ㄦ彃浠跺苟鐧诲綍");
+ err_count = 3;
+ }
+ else
+ {
+ HandleNormal();
+ }
+ }
+ }
+
+
+ /// <summary>
+ /// 鎼滅储鏄惁鏈夊鍏ョ獥鍙o紝鏈夊氨涓�鐩存渶灏忓寲锛屽苟鎵ц瑙勫垯妫�鏌�
+ /// </summary>
+ /// <returns></returns>
+ private void ListenImportHandle()
+ {
+ IntPtr ptr = WindowIntPtrUtil.FindWindow(null, "Everything");//瀵煎叆鏂囨。
+ if (ptr == IntPtr.Zero)
+ {
+ return;
+ }
+ WindowIntPtrUtil.KillProcessByIntPtr(ptr);
+ }
+
+ /// <summary>
+ /// 鎼滅储鏄惁鏈夋鍏ョ獥鍙o紝鏈夊氨涓�鐩存渶灏忓寲锛屽苟鎵ц瑙勫垯妫�鏌�
+ /// </summary>
+ /// <returns></returns>
+ private void ListenCheckInHandle()
+ {
+ IntPtr ptr = WindowIntPtrUtil.FindWindow(null, "妫�鍏ユ枃妗�");
+ if (ptr == IntPtr.Zero)
+ {
+ return;
+ }
+ WindowIntPtrUtil.KillProcessByIntPtr(ptr);
+ }
+
+ private void Timer_Elapsed(object sender, ElapsedEventArgs e)
+ {
+ socketTimer.Stop();
+ try
+ {
+ if (!client.IsConnected)
+ {
+ client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5678));
+ }
+ else
+ {
+ var msg = Encoding.Default.GetBytes("HeatBeat");
+ client.Send(msg, 0, msg.Length);
+ }
+ }
+ catch (Exception ex)
+ {
+ HandleErr();
+ }
+ finally
+ {
+ socketTimer.Start();
+ }
+ }
+
+ /// <summary>
+ /// 鎺ユ敹鍒版秷鎭�
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void Client_DataReceived(object sender, DataEventArgs e)
+ {
+ byte flag = e.Data[0];
+ if (flag == 1)
+ {
+ HandleNormal();
+ }
+ else
+ {
+ log.Error("Plugin Return 0.");
+ HandleErr();
+ }
+ }
+
+ /// <summary>
+ /// 瀹㈡埛绔叧闂紝瑙嗕负寮傚父
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void Client_Closed(object sender, EventArgs e)
+ {
+ HandleErr();
+ }
+
+ /// <summary>
+ /// 瀹㈡埛绔紓甯�
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void Client_Error(object sender, ErrorEventArgs e)
+ {
+ HandleErr();
+ }
+
+ /// <summary>
+ /// 杩炴帴鍚庣殑鎿嶄綔
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void Client_Connected(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/PluginListener/PluginListener.csproj b/PluginListener/PluginListener.csproj
new file mode 100644
index 0000000..7871a28
--- /dev/null
+++ b/PluginListener/PluginListener.csproj
@@ -0,0 +1,245 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{E92EE4C3-A373-41FE-8234-2DB56E2C6DFA}</ProjectGuid>
+ <OutputType>WinExe</OutputType>
+ <RootNamespace>PluginListener</RootNamespace>
+ <AssemblyName>PluginListener</AssemblyName>
+ <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <WarningLevel>4</WarningLevel>
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ <Deterministic>true</Deterministic>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>..\PdmSw\bin\x64\Debug\Listener\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <DebugType>full</DebugType>
+ <PlatformTarget>x64</PlatformTarget>
+ <LangVersion>7.3</LangVersion>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+ <OutputPath>..\PdmSw\bin\x64\Release\Listener\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <Optimize>true</Optimize>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>x64</PlatformTarget>
+ <LangVersion>7.3</LangVersion>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup>
+ <TargetZone>LocalIntranet</TargetZone>
+ </PropertyGroup>
+ <PropertyGroup>
+ <GenerateManifests>false</GenerateManifests>
+ </PropertyGroup>
+ <PropertyGroup>
+ <ApplicationManifest>Properties\app.manifest</ApplicationManifest>
+ </PropertyGroup>
+ <PropertyGroup>
+ <StartupObject>PluginListener.Program</StartupObject>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
+ <HintPath>packages\log4net.2.0.3\lib\net40-full\log4net.dll</HintPath>
+ </Reference>
+ <Reference Include="SolidWorks.Interop.sldworks">
+ <HintPath>C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\api\redist\SolidWorks.Interop.sldworks.dll</HintPath>
+ <EmbedInteropTypes>True</EmbedInteropTypes>
+ </Reference>
+ <Reference Include="SolidWorks.Interop.swconst">
+ <HintPath>C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\api\redist\SolidWorks.Interop.swconst.dll</HintPath>
+ <EmbedInteropTypes>True</EmbedInteropTypes>
+ </Reference>
+ <Reference Include="SuperSocket.ClientEngine, Version=0.10.0.0, Culture=neutral, PublicKeyToken=ee9af13f57f00acc, processorArchitecture=MSIL">
+ <HintPath>packages\SuperSocket.ClientEngine.0.10.0\lib\net45\SuperSocket.ClientEngine.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.Common, Version=1.6.6.1, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
+ <HintPath>packages\SuperSocket.1.6.6.1\lib\net45\SuperSocket.Common.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.Facility, Version=1.6.6.1, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
+ <HintPath>packages\SuperSocket.1.6.6.1\lib\net45\SuperSocket.Facility.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.ProtoBase, Version=1.7.0.17, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
+ <HintPath>packages\SuperSocket.ProtoBase.1.7.0.17\lib\net45\SuperSocket.ProtoBase.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.SocketBase, Version=1.6.6.1, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
+ <HintPath>packages\SuperSocket.1.6.6.1\lib\net45\SuperSocket.SocketBase.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.SocketEngine, Version=1.6.6.1, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
+ <HintPath>packages\SuperSocket.Engine.1.6.6.1\lib\net45\SuperSocket.SocketEngine.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.SocketService, Version=1.6.6.1, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
+ <HintPath>packages\SuperSocket.Engine.1.6.6.1\lib\net45\SuperSocket.SocketService.exe</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Collections.Specialized, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>packages\System.Collections.Specialized.4.3.0\lib\net46\System.Collections.Specialized.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.ComponentModel.Composition" />
+ <Reference Include="System.Configuration" />
+ <Reference Include="System.Configuration.Install" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Linq, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>packages\System.Linq.4.3.0\lib\net463\System.Linq.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Management" />
+ <Reference Include="System.Net.NameResolution, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>packages\System.Net.NameResolution.4.3.0\lib\net46\System.Net.NameResolution.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Net.Security, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>packages\System.Net.Security.4.3.0\lib\net46\System.Net.Security.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Runtime.Extensions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Runtime.InteropServices, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.ServiceProcess" />
+ <Reference Include="System.Web.Extensions" />
+ <Reference Include="System.Xml" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xaml">
+ <RequiredTargetFramework>4.0</RequiredTargetFramework>
+ </Reference>
+ <Reference Include="WindowsBase" />
+ <Reference Include="PresentationCore" />
+ <Reference Include="PresentationFramework" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Alert.xaml.cs">
+ <DependentUpon>Alert.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="Listener.cs">
+ <SubType>Component</SubType>
+ </Compile>
+ <Compile Include="Intercepter.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="Util.cs" />
+ <Compile Include="WindowUtil.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Properties\AssemblyInfo.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Properties\Resources.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Resources.resx</DependentUpon>
+ </Compile>
+ <Compile Include="Properties\Settings.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DependentUpon>Settings.settings</DependentUpon>
+ <DesignTimeSharedInput>True</DesignTimeSharedInput>
+ </Compile>
+ <EmbeddedResource Include="Properties\Resources.resx">
+ <Generator>ResXFileCodeGenerator</Generator>
+ <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+ </EmbeddedResource>
+ <None Include="log4net.config">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="packages.config" />
+ <None Include="Properties\app.manifest" />
+ <None Include="Properties\Settings.settings">
+ <Generator>SettingsSingleFileGenerator</Generator>
+ <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+ </None>
+ <None Include="supersocket.cmd" />
+ <None Include="supersocket.sh" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <Page Include="Alert.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <PropertyGroup>
+ <PostBuildEvent>
+ </PostBuildEvent>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/PluginListener/Program.cs b/PluginListener/Program.cs
new file mode 100644
index 0000000..2a8350d
--- /dev/null
+++ b/PluginListener/Program.cs
@@ -0,0 +1,32 @@
+锘縰sing log4net.Config;
+using System;
+using System.IO;
+using System.Reflection;
+using System.ServiceProcess;
+
+namespace PluginListener
+{
+ public class Program
+ { /// <summary>
+ /// 搴旂敤绋嬪簭鐨勪富鍏ュ彛鐐广��
+ /// </summary>
+ [STAThread]
+ public static void Main()
+ {
+ string assemblyFilePath = Assembly.GetExecutingAssembly().Location;
+ string assemblyDirPath = Path.GetDirectoryName(assemblyFilePath);
+ string configFilePath = Path.Combine(assemblyDirPath,"log4net.config");
+ XmlConfigurator.Configure(new FileInfo(configFilePath));
+
+ ServiceBase[] ServicesToRun;
+ ServicesToRun = new ServiceBase[]
+ {
+ new Listener()
+ };
+ ServiceBase.Run(ServicesToRun);
+ }
+ }
+}
+
+// sc create "SolidWorks Listener" binpath= "D:\Workspace\PdmSwPlugin2\PdmSw\bin\x64\Debug\Listener\PluginListener.exe" type= interact type= own displayname= "SolidWorks Listener"
+
diff --git a/PluginListener/Properties/AssemblyInfo.cs b/PluginListener/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..756f1b1
--- /dev/null
+++ b/PluginListener/Properties/AssemblyInfo.cs
@@ -0,0 +1,52 @@
+锘縰sing System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// 鏈夊叧绋嬪簭闆嗙殑涓�鑸俊鎭敱浠ヤ笅
+// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("PluginListener")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("PluginListener")]
+[assembly: AssemblyCopyright("Copyright 漏 2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷
+//瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷
+//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+//鑻ヨ寮�濮嬬敓鎴愬彲鏈湴鍖栫殑搴旂敤绋嬪簭锛岃璁剧疆
+//.csproj 鏂囦欢涓殑 <UICulture>CultureYouAreCodingWith</UICulture>
+//鍦� <PropertyGroup> 涓�備緥濡傦紝濡傛灉浣犱娇鐢ㄧ殑鏄編鍥借嫳璇��
+//浣跨敤鐨勬槸缇庡浗鑻辫锛岃灏� <UICulture> 璁剧疆涓� en-US銆� 鐒跺悗鍙栨秷
+//瀵逛互涓� NeutralResourceLanguage 鐗规�х殑娉ㄩ噴銆� 鏇存柊
+//浠ヤ笅琛屼腑鐨勨�渆n-US鈥濅互鍖归厤椤圭洰鏂囦欢涓殑 UICulture 璁剧疆銆�
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //涓婚鐗瑰畾璧勬簮璇嶅吀鎵�澶勪綅缃�
+ //(鏈湪椤甸潰涓壘鍒拌祫婧愭椂浣跨敤锛�
+ //鎴栧簲鐢ㄧ▼搴忚祫婧愬瓧鍏镐腑鎵惧埌鏃朵娇鐢�)
+ ResourceDictionaryLocation.SourceAssembly //甯歌璧勬簮璇嶅吀鎵�澶勪綅缃�
+ //(鏈湪椤甸潰涓壘鍒拌祫婧愭椂浣跨敤锛�
+ //銆佸簲鐢ㄧ▼搴忔垨浠讳綍涓婚涓撶敤璧勬簮瀛楀吀涓壘鍒版椂浣跨敤)
+)]
+
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鐢熸垚鍙�
+// 淇鍙�
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/PluginListener/Properties/Resources.Designer.cs b/PluginListener/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..badfa97
--- /dev/null
+++ b/PluginListener/Properties/Resources.Designer.cs
@@ -0,0 +1,63 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�:4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace PluginListener.Properties {
+ using System;
+
+
+ /// <summary>
+ /// 涓�涓己绫诲瀷鐨勮祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲鐨勫瓧绗︿覆绛夈��
+ /// </summary>
+ // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+ // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+ // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+ // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ /// <summary>
+ /// 杩斿洖姝ょ被浣跨敤鐨勭紦瀛樼殑 ResourceManager 瀹炰緥銆�
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PluginListener.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ /// <summary>
+ /// 閲嶅啓褰撳墠绾跨▼鐨� CurrentUICulture 灞炴�э紝瀵�
+ /// 浣跨敤姝ゅ己绫诲瀷璧勬簮绫荤殑鎵�鏈夎祫婧愭煡鎵炬墽琛岄噸鍐欍��
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/PluginListener/Properties/Resources.resx b/PluginListener/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/PluginListener/Properties/Resources.resx
@@ -0,0 +1,117 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
diff --git a/PluginListener/Properties/Settings.Designer.cs b/PluginListener/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..2ad6dbc
--- /dev/null
+++ b/PluginListener/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�:4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳戒細瀵艰嚧涓嶆纭殑琛屼负锛屽苟涓斿鏋�
+// 閲嶆柊鐢熸垚浠g爜锛岃繖浜涙洿鏀瑰皢浼氫涪澶便��
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace PluginListener.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.11.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/PluginListener/Properties/Settings.settings b/PluginListener/Properties/Settings.settings
new file mode 100644
index 0000000..033d7a5
--- /dev/null
+++ b/PluginListener/Properties/Settings.settings
@@ -0,0 +1,7 @@
+锘�<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
+ <Profiles>
+ <Profile Name="(Default)" />
+ </Profiles>
+ <Settings />
+</SettingsFile>
\ No newline at end of file
diff --git a/PluginListener/Properties/app.manifest b/PluginListener/Properties/app.manifest
new file mode 100644
index 0000000..e1175ad
--- /dev/null
+++ b/PluginListener/Properties/app.manifest
@@ -0,0 +1,73 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
+ <assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
+ <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+ <security>
+ <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+ <!-- UAC 娓呭崟閫夐」
+ 濡傛灉鎯宠鏇存敼 Windows 鐢ㄦ埛甯愭埛鎺у埗绾у埆锛岃浣跨敤
+ 浠ヤ笅鑺傜偣涔嬩竴鏇挎崲 requestedExecutionLevel 鑺傜偣銆�
+
+ <requestedExecutionLevel level="asInvoker" uiAccess="false" />
+ <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
+ <requestedExecutionLevel level="highestAvailable" uiAccess="false" />
+
+ 鎸囧畾 requestedExecutionLevel 鍏冪礌灏嗙鐢ㄦ枃浠跺拰娉ㄥ唽琛ㄨ櫄鎷熷寲銆�
+ 濡傛灉浣犵殑搴旂敤绋嬪簭闇�瑕佹铏氭嫙鍖栨潵瀹炵幇鍚戝悗鍏煎鎬э紝鍒欑Щ闄ゆ
+ 鍏冪礌銆�
+ -->
+ <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
+ </requestedPrivileges>
+ <applicationRequestMinimum>
+ <defaultAssemblyRequest permissionSetReference="Custom" />
+ <PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
+ </applicationRequestMinimum>
+ </security>
+ </trustInfo>
+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+ <application>
+ <!-- 璁捐姝ゅ簲鐢ㄧ▼搴忎笌鍏朵竴璧峰伐浣滀笖宸查拡瀵规搴旂敤绋嬪簭杩涜娴嬭瘯鐨�
+ Windows 鐗堟湰鐨勫垪琛ㄣ�傚彇娑堣瘎璁洪�傚綋鐨勫厓绱狅紝
+ Windows 灏嗚嚜鍔ㄩ�夋嫨鏈�鍏煎鐨勭幆澧冦�� -->
+ <!-- Windows Vista -->
+ <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
+ <!-- Windows 7 -->
+ <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
+ <!-- Windows 8 -->
+ <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
+ <!-- Windows 8.1 -->
+ <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
+ <!-- Windows 10 -->
+ <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
+ </application>
+ </compatibility>
+ <!-- 鎸囩ず璇ュ簲鐢ㄧ▼搴忓彲鎰熺煡 DPI 涓� Windows 鍦� DPI 杈冮珮鏃跺皢涓嶄細瀵瑰叾杩涜
+ 鑷姩缂╂斁銆俉indows Presentation Foundation (WPF)搴旂敤绋嬪簭鑷姩鎰熺煡 DPI锛屾棤闇�
+ 閫夋嫨鍔犲叆銆傞�夋嫨鍔犲叆姝よ缃殑 Windows 绐椾綋搴旂敤绋嬪簭(闈㈠悜 .NET Framework 4.6)杩樺簲
+ 鍦ㄥ叾 app.config 涓皢 "EnableWindowsFormsHighDpiAutoResizing" 璁剧疆璁剧疆涓� "true"銆�
+
+ 灏嗗簲鐢ㄧ▼搴忚涓烘劅鐭ラ暱璺緞銆傝鍙傞槄 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
+ <!--
+ <application xmlns="urn:schemas-microsoft-com:asm.v3">
+ <windowsSettings>
+ <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
+ <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
+ </windowsSettings>
+ </application>
+ -->
+ <!-- 鍚敤 Windows 鍏叡鎺т欢鍜屽璇濇鐨勪富棰�(Windows XP 鍜屾洿楂樼増鏈�) -->
+ <!--
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="*"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+ </dependency>
+ -->
+</assembly>
\ No newline at end of file
diff --git a/PluginListener/Util.cs b/PluginListener/Util.cs
new file mode 100644
index 0000000..e8343fa
--- /dev/null
+++ b/PluginListener/Util.cs
@@ -0,0 +1,184 @@
+锘縰sing System;
+using System.Runtime.InteropServices;
+
+namespace PluginListener
+{
+ public class WinAPI_Interop
+ {
+ public static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;
+ /// <summary>
+ /// 鏈嶅姟绋嬪簭鎵ц娑堟伅鎻愮ず,鍓嶅彴MessageBox.Show
+ /// </summary>
+ /// <param name="message">娑堟伅鍐呭</param>
+ /// <param name="title">鏍囬</param>
+ public static void ShowServiceMessage(string message, string title)
+ {
+ int resp = 0;
+ WTSSendMessage(WTS_CURRENT_SERVER_HANDLE, WTSGetActiveConsoleSessionId(), title, title.Length, message, message.Length, 0, 0, out resp, false);
+ }
+
+ [DllImport("kernel32.dll", SetLastError = true)]
+ public static extern int WTSGetActiveConsoleSessionId();
+
+ [DllImport("wtsapi32.dll", SetLastError = true)]
+ public static extern bool WTSSendMessage(IntPtr hServer, int SessionId, String pTitle, int TitleLength, String pMessage, int MessageLength, int Style, int Timeout, out int pResponse, bool bWait);
+ #region P/Invoke WTS APIs
+ private enum WTS_CONNECTSTATE_CLASS
+ {
+ WTSActive,
+ WTSConnected,
+ WTSConnectQuery,
+ WTSShadow,
+ WTSDisconnected,
+ WTSIdle,
+ WTSListen,
+ WTSReset,
+ WTSDown,
+ WTSInit
+ }
+
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
+ private struct WTS_SESSION_INFO
+ {
+ public UInt32 SessionID;
+ public string pWinStationName;
+ public WTS_CONNECTSTATE_CLASS State;
+ }
+
+ [DllImport("WTSAPI32.DLL", SetLastError = true, CharSet = CharSet.Auto)]
+ static extern bool WTSEnumerateSessions(
+ IntPtr hServer,
+ [MarshalAs(UnmanagedType.U4)] UInt32 Reserved,
+ [MarshalAs(UnmanagedType.U4)] UInt32 Version,
+ ref IntPtr ppSessionInfo,
+ [MarshalAs(UnmanagedType.U4)] ref UInt32 pSessionInfoCount
+ );
+
+ [DllImport("WTSAPI32.DLL", SetLastError = true, CharSet = CharSet.Auto)]
+ static extern void WTSFreeMemory(IntPtr pMemory);
+
+ [DllImport("WTSAPI32.DLL", SetLastError = true, CharSet = CharSet.Auto)]
+ static extern bool WTSQueryUserToken(UInt32 sessionId, out IntPtr Token);
+ #endregion
+
+ #region P/Invoke CreateProcessAsUser
+ /// <summary>
+ /// Struct, Enum and P/Invoke Declarations for CreateProcessAsUser.
+ /// </summary>
+ ///
+
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
+ struct STARTUPINFO
+ {
+ public Int32 cb;
+ public string lpReserved;
+ public string lpDesktop;
+ public string lpTitle;
+ public Int32 dwX;
+ public Int32 dwY;
+ public Int32 dwXSize;
+ public Int32 dwYSize;
+ public Int32 dwXCountChars;
+ public Int32 dwYCountChars;
+ public Int32 dwFillAttribute;
+ public Int32 dwFlags;
+ public Int16 wShowWindow;
+ public Int16 cbReserved2;
+ public IntPtr lpReserved2;
+ public IntPtr hStdInput;
+ public IntPtr hStdOutput;
+ public IntPtr hStdError;
+ }
+
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
+ struct PROCESS_INFORMATION
+ {
+ public IntPtr hProcess;
+ public IntPtr hThread;
+ public int dwProcessId;
+ public int dwThreadId;
+ }
+
+ /// <summary>
+ /// 浠ュ綋鍓嶇櫥褰曠殑windows鐢ㄦ埛(瑙掕壊鏉冮檺)杩愯鎸囧畾绋嬪簭杩涚▼
+ /// </summary>
+ /// <param name="hToken"></param>
+ /// <param name="lpApplicationName">鎸囧畾绋嬪簭(鍏ㄨ矾寰�)</param>
+ /// <param name="lpCommandLine">鍙傛暟</param>
+ /// <param name="lpProcessAttributes">杩涚▼灞炴��</param>
+ /// <param name="lpThreadAttributes">绾跨▼灞炴��</param>
+ /// <param name="bInheritHandles"></param>
+ /// <param name="dwCreationFlags"></param>
+ /// <param name="lpEnvironment"></param>
+ /// <param name="lpCurrentDirectory"></param>
+ /// <param name="lpStartupInfo">绋嬪簭鍚姩灞炴��</param>
+ /// <param name="lpProcessInformation">鏈�鍚庤繑鍥炵殑杩涚▼淇℃伅</param>
+ /// <returns>鏄惁璋冪敤鎴愬姛</returns>
+ [DllImport("ADVAPI32.DLL", SetLastError = true, CharSet = CharSet.Auto)]
+ static extern bool CreateProcessAsUser(IntPtr hToken, string lpApplicationName, string lpCommandLine, IntPtr lpProcessAttributes, IntPtr lpThreadAttributes,
+ bool bInheritHandles, uint dwCreationFlags, string lpEnvironment, string lpCurrentDirectory,
+ ref STARTUPINFO lpStartupInfo, out PROCESS_INFORMATION lpProcessInformation);
+
+ [DllImport("KERNEL32.DLL", SetLastError = true, CharSet = CharSet.Auto)]
+ static extern bool CloseHandle(IntPtr hHandle);
+ #endregion
+
+ /// <summary>
+ /// 浠ュ綋鍓嶇櫥褰曠郴缁熺殑鐢ㄦ埛瑙掕壊鏉冮檺鍚姩鎸囧畾鐨勮繘绋�
+ /// </summary>
+ /// <param name="ChildProcName">鎸囧畾鐨勮繘绋�(鍏ㄨ矾寰�)</param>
+ public static void CreateProcess(string ChildProcName)
+ {
+ IntPtr ppSessionInfo = IntPtr.Zero;
+ UInt32 SessionCount = 0;
+ if (WTSEnumerateSessions(
+ (IntPtr)WTS_CURRENT_SERVER_HANDLE, // Current RD Session Host Server handle would be zero.
+ 0, // This reserved parameter must be zero.
+ 1, // The version of the enumeration request must be 1.
+ ref ppSessionInfo, // This would point to an array of session info.
+ ref SessionCount // This would indicate the length of the above array.
+ ))
+ {
+ for (int nCount = 0; nCount < SessionCount; nCount++)
+ {
+ WTS_SESSION_INFO tSessionInfo = (WTS_SESSION_INFO)Marshal.PtrToStructure(ppSessionInfo + nCount * Marshal.SizeOf(typeof(WTS_SESSION_INFO)), typeof(WTS_SESSION_INFO));
+ if (WTS_CONNECTSTATE_CLASS.WTSActive == tSessionInfo.State)
+ {
+ IntPtr hToken = IntPtr.Zero;
+ if (WTSQueryUserToken(tSessionInfo.SessionID, out hToken))
+ {
+ PROCESS_INFORMATION tProcessInfo;
+ STARTUPINFO tStartUpInfo = new STARTUPINFO();
+ tStartUpInfo.cb = Marshal.SizeOf(typeof(STARTUPINFO));
+ bool ChildProcStarted = CreateProcessAsUser(
+ hToken, // Token of the logged-on user.
+ ChildProcName, // Name of the process to be started.
+ null, // Any command line arguments to be passed.
+ IntPtr.Zero, // Default Process' attributes.
+ IntPtr.Zero, // Default Thread's attributes.
+ false, // Does NOT inherit parent's handles.
+ 0, // No any specific creation flag.
+ null, // Default environment path.
+ null, // Default current directory.
+ ref tStartUpInfo, // Process Startup Info.
+ out tProcessInfo // Process information to be returned.
+ );
+ if (ChildProcStarted)
+ {
+ CloseHandle(tProcessInfo.hThread);
+ CloseHandle(tProcessInfo.hProcess);
+ }
+ else
+ {
+ ShowServiceMessage("CreateProcessAsUser澶辫触", "CreateProcess");
+ }
+ CloseHandle(hToken);
+ break;
+ }
+ }
+ }
+ WTSFreeMemory(ppSessionInfo);
+ }
+ }
+ }
+}
diff --git a/PluginListener/WindowUtil.cs b/PluginListener/WindowUtil.cs
new file mode 100644
index 0000000..79e42fc
--- /dev/null
+++ b/PluginListener/WindowUtil.cs
@@ -0,0 +1,48 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+namespace PluginListener
+{
+ public class WindowIntPtrUtil
+ {
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern IntPtr FindWindow(string className, string windowName);
+
+ [DllImport("user32.dll")]
+ public static extern IntPtr FindWindowByProcessId(int processId, int threadId);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern uint GetWindowThreadProcessId(IntPtr ptr, out uint processId);
+
+ /// <summary>
+ /// 鎿嶄綔绐楀彛 1鏄縺娲� 6鏄渶灏忓寲
+ /// </summary>
+ /// <param name="ptr"></param>
+ /// <param name="command">1鏄縺娲� 6鏄渶灏忓寲</param>
+ /// <returns></returns>
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern bool ShowWindow(IntPtr ptr, int command);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern bool SendMessage(IntPtr ptr, UInt32 Msg, IntPtr wParam, IntPtr lParam);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern bool PostMessage(IntPtr ptr, UInt32 Msg, IntPtr wParam, IntPtr lParam);
+
+ public static void KillProcessByIntPtr(IntPtr ptr)
+ {
+ //GetWindowThreadProcessId(ptr, out uint processId);
+ //if (processId == 0) return;
+ //Process process = Process.GetProcessById((int)processId);
+ //process.Kill();
+ //process.WaitForExit();
+ CloseWindow(ptr);
+ }
+
+ public static void CloseWindow(IntPtr ptr)
+ {
+ SendMessage(ptr, (UInt32)0x0010, IntPtr.Zero, IntPtr.Zero);
+ }
+ }
+}
diff --git a/PluginListener/log4net.config b/PluginListener/log4net.config
new file mode 100644
index 0000000..8b8684b
--- /dev/null
+++ b/PluginListener/log4net.config
@@ -0,0 +1,37 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<log4net>
+ <!-- 鎺у埗鍙版棩蹇楅厤缃� -->
+ <appender name="Console" type="log4net.Appender.ConsoleAppender">
+ <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
+ <layout type="log4net.Layout.PatternLayout">
+ <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
+ </layout>
+ </appender>
+
+ <!-- 鏂囦欢瀛樺偍鏃ュ織閰嶇疆 -->
+ <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
+ <!-- 淇濆瓨鏂囦欢鐨勫悕绉� -->
+ <file value="./Log/" />
+ <appendToFile value="true" />
+ <rollingStyle value="Date" />
+ <datePattern value="'log_'yyyyMMdd'.log'"/>
+ <staticLogFileName value="false"/>
+
+ <!-- 鏂囦欢鐨勭紪鐮佹柟寮� -->
+ <param name="Encoding" value="UTF-8"/>
+ <!-- 姣忎釜鏂囦欢鐨勫ぇ灏� -->
+ <maximumFileSize value="100KB" />
+ <!-- 淇濆瓨鏂囦欢鏁伴噺 -->
+ <maxSizeRollBackups value="2" />
+ <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
+ <layout type="log4net.Layout.PatternLayout">
+ <conversionPattern value="%date{ISO8601} [%logger] %level %class - %message%newline" />
+ </layout>
+ </appender>
+
+ <root>
+ <level value="DEBUG" />
+ <appender-ref ref="Console" />
+ <appender-ref ref="RollingFile" />
+ </root>
+</log4net>
\ No newline at end of file
diff --git a/PluginListener/packages.config b/PluginListener/packages.config
new file mode 100644
index 0000000..02a9f03
--- /dev/null
+++ b/PluginListener/packages.config
@@ -0,0 +1,23 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="log4net" version="2.0.3" targetFramework="net472" />
+ <package id="SuperSocket" version="1.6.6.1" targetFramework="net472" />
+ <package id="SuperSocket.ClientEngine" version="0.10.0" targetFramework="net472" />
+ <package id="SuperSocket.Engine" version="1.6.6.1" targetFramework="net472" />
+ <package id="SuperSocket.ProtoBase" version="1.7.0.17" targetFramework="net472" />
+ <package id="System.Collections.Specialized" version="4.3.0" targetFramework="net472" />
+ <package id="System.IO" version="4.3.0" targetFramework="net472" />
+ <package id="System.Linq" version="4.3.0" targetFramework="net472" />
+ <package id="System.Net.NameResolution" version="4.3.0" targetFramework="net472" />
+ <package id="System.Net.Security" version="4.3.0" targetFramework="net472" />
+ <package id="System.Net.Sockets" version="4.3.0" targetFramework="net472" />
+ <package id="System.Runtime" version="4.3.0" targetFramework="net472" />
+ <package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net472" />
+ <package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net472" />
+ <package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net472" />
+ <package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net472" />
+ <package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net472" />
+ <package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net472" />
+ <package id="System.Text.Encoding" version="4.3.0" targetFramework="net472" />
+ <package id="System.Threading" version="4.3.0" targetFramework="net472" />
+</packages>
\ No newline at end of file
diff --git a/PluginListener/supersocket.cmd b/PluginListener/supersocket.cmd
new file mode 100644
index 0000000..4532661
--- /dev/null
+++ b/PluginListener/supersocket.cmd
@@ -0,0 +1,2 @@
+@echo off
+SuperSocket.SocketService.exe -c %1 %2
\ No newline at end of file
diff --git a/PluginListener/supersocket.sh b/PluginListener/supersocket.sh
new file mode 100644
index 0000000..f3cd0d9
--- /dev/null
+++ b/PluginListener/supersocket.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+mono SuperSocket.SocketService.exe -c $1 $2
\ No newline at end of file
diff --git a/SolidWorksListener/App.config b/SolidWorksListener/App.config
new file mode 100644
index 0000000..56efbc7
--- /dev/null
+++ b/SolidWorksListener/App.config
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
+ </startup>
+</configuration>
\ No newline at end of file
diff --git a/SolidWorksListener/App.xaml b/SolidWorksListener/App.xaml
new file mode 100644
index 0000000..37ce4e0
--- /dev/null
+++ b/SolidWorksListener/App.xaml
@@ -0,0 +1,9 @@
+锘�<Application x:Class="SolidWorksListener.App"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="clr-namespace:SolidWorksListener"
+ Startup="Application_Startup">
+ <Application.Resources>
+
+ </Application.Resources>
+</Application>
diff --git a/SolidWorksListener/App.xaml.cs b/SolidWorksListener/App.xaml.cs
new file mode 100644
index 0000000..5c49053
--- /dev/null
+++ b/SolidWorksListener/App.xaml.cs
@@ -0,0 +1,34 @@
+锘縰sing System.Windows;
+
+namespace SolidWorksListener
+{
+ /// <summary>
+ /// App.xaml 鐨勪氦浜掗�昏緫
+ /// </summary>
+ public partial class App : Application
+ {
+ public static Listener listener;
+ private static System.Threading.Mutex mutex;
+ //绯荤粺鑳藉璇嗗埆鏈夊悕绉扮殑浜掓枼锛屽洜姝ゅ彲浠ヤ娇鐢ㄥ畠绂佹搴旂敤绋嬪簭鍚姩涓ゆ
+ //绗簩涓弬鏁板彲浠ヨ缃负浜у搧鐨勫悕绉�:Application.ProductName
+ // 姣忔鍚姩搴旂敤绋嬪簭锛岄兘浼氶獙璇佸悕绉颁负OnlyRun鐨勪簰鏂ユ槸鍚﹀瓨鍦�
+ protected override void OnStartup(StartupEventArgs e)
+ {
+ mutex = new System.Threading.Mutex(true, Application.Current.ToString());
+ if (mutex.WaitOne(0, false))
+ {
+ base.OnStartup(e);
+ }
+ else
+ {
+ this.Shutdown();
+ }
+ }
+
+ private void Application_Startup(object sender, StartupEventArgs e)
+ {
+ listener = new Listener();
+ listener.Start();
+ }
+ }
+}
diff --git a/SolidWorksListener/Listener.cs b/SolidWorksListener/Listener.cs
new file mode 100644
index 0000000..1719930
--- /dev/null
+++ b/SolidWorksListener/Listener.cs
@@ -0,0 +1,355 @@
+锘縰sing log4net;
+using SuperSocket.ClientEngine;
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.Net;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Timers;
+using System.Windows;
+
+namespace SolidWorksListener
+{
+ public class Listener
+ {
+ private ILog log = LogManager.GetLogger("Listener");
+ private AsyncTcpSession client;
+
+ private long err_count;
+
+ private System.Timers.Timer socketTimer;
+ private System.Timers.Timer importTimer;
+ private System.Timers.Timer checkInTimer;
+
+ private volatile int is_open = int.MaxValue;
+
+ private int msgInterval = 5000;
+
+ #region 娑堟伅
+ public static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;
+
+ public void ShowMessageBox(string message, string title)
+ {
+ /*if (is_open == 0)
+ {
+ return;
+ }*/
+ is_open = 0;
+ int res;
+ WTSSendMessage(
+ WTS_CURRENT_SERVER_HANDLE,
+ WTSGetActiveConsoleSessionId(),
+ title, title.Length,
+ message, message.Length,
+ 0, 0, out res, true);
+ is_open = res;
+ }
+
+ [DllImport("kernel32.dll", SetLastError = true)]
+ public static extern int WTSGetActiveConsoleSessionId();
+
+ [DllImport("wtsapi32.dll", SetLastError = true)]
+ public static extern bool WTSSendMessage(
+ IntPtr hServer,
+ int SessionId,
+ String pTitle,
+ int TitleLength,
+ String pMessage,
+ int MessageLength,
+ int Style,
+ int Timeout,
+ out int pResponse,
+ bool bWait);
+ #endregion
+
+ private void AlertMsg(string msg)
+ {
+ /// 鍐呯疆WPF鐨� 涓嶈兘鐢�
+ // alert.Open(msg);
+
+ /*try
+ {
+ // SwApp = (SldWorks)Marshal.GetActiveObject("SldWorks.Application.28");
+ var swApp = (SldWorks)System.Runtime.InteropServices.Marshal.GetActiveObject("SldWorks.Application");
+ swApp.SendMsgToUser2(msg, (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk);
+ Marshal.ReleaseComObject(swApp);
+ }
+ catch (COMException ex)
+ {
+ log.Error("Attach Sw Failed.", ex);
+ }*/
+
+ // WinAPI_Interop.ShowServiceMessage(msg, "鎻愮ず");
+ // ShowMessageBox(msg, "鎻愮ず");
+ string exeDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
+ string alertPath = Path.GetFullPath(Path.Combine(exeDir,"..","Alert.exe"));
+ if (File.Exists(alertPath))
+ {
+ Process.Start(alertPath);
+ }
+ else
+ {
+ MessageBox.Show(msg, "鎻愮ず");
+ }
+
+ /// 鐢∕essageBox鐨� 涓嶈兘鐢�
+ /*if (swApp == null)
+ {
+ int res;
+ WTSSendMessage(
+ WTS_CURRENT_SERVER_HANDLE,
+ WTSGetActiveConsoleSessionId(),//鑾峰緱褰撳墠鏄剧ず鐨勬闈㈡墍鍦ㄧ殑SessionID
+ "鎻愮ず", "鎻愮ず".Length,
+ msg, msg.Length,
+ 0, 0, out res, false);
+ }
+ else
+ {
+ swApp.SendMsgToUser2(msg, (int)swMessageBoxIcon_e.swMbStop, (int)swMessageBoxBtn_e.swMbOk);
+ }*/
+
+ //
+
+ ///鍚姩exe鐨�
+ /*ProcessStartInfo psi = new ProcessStartInfo
+ {
+ FileName = "AlertWindow.exe",
+ UseShellExecute = false,
+ CreateNoWindow = true
+ };
+ Process process = Process.Start(psi);*/
+ }
+
+ public Listener()
+ {
+ client = new AsyncTcpSession();
+ client.Connected += Client_Connected;
+ client.Error += Client_Error;
+ client.Closed += Client_Closed;
+ client.DataReceived += Client_DataReceived;
+ log.Info("Service Started.");
+ }
+
+ public void Start()
+ {
+ InitSocketTimer();
+ }
+
+ public void Stop()
+ {
+ socketTimer?.Stop();
+ StopInterceptTimer();
+ // alert.DoClose();
+ // if (intercepter != null) intercepter.StopIntercept();
+ }
+
+ /// <summary>
+ /// 鍚姩Socket瀹氭椂鍣�
+ /// </summary>
+ public void InitSocketTimer()
+ {
+ log.Info("Starting Socket Timer...");
+ socketTimer = new System.Timers.Timer(msgInterval);
+ socketTimer.Elapsed += Timer_Elapsed;
+ socketTimer.Enabled = true;
+ socketTimer.Start();
+ log.Info("Started Socket Timer!");
+ }
+
+ /// <summary>
+ /// 鍚姩閲戣澏鎷︽埅浠诲姟
+ /// </summary>
+ public void StartInterceptTimer()
+ {
+ // if (intercepter == null) intercepter = new Intercepter(ListenImportHandle, ListenCheckInHandle);
+ if (importTimer == null)
+ {
+ importTimer = new System.Timers.Timer(500);
+ importTimer.Elapsed += ImportTimer_Elapsed;
+ }
+ importTimer.Start();
+ if (checkInTimer == null)
+ {
+ checkInTimer = new System.Timers.Timer(500);
+ checkInTimer.Elapsed += CheckInTimer_Elapsed;
+ }
+ checkInTimer.Start();
+ }
+
+ private void ImportTimer_Elapsed(object sender, ElapsedEventArgs e)
+ {
+ lock (importTimer)
+ {
+ ListenImportHandle();
+ }
+ }
+
+ private void CheckInTimer_Elapsed(object sender, ElapsedEventArgs e)
+ {
+ lock (checkInTimer)
+ {
+ ListenCheckInHandle();
+ }
+ }
+
+ /// <summary>
+ /// 鍋滄閲戣澏鎷︽埅浠诲姟
+ /// </summary>
+ private void StopInterceptTimer()
+ {
+ /*if (intercepter != null)
+ {
+ intercepter.StopIntercept();
+ intercepter = null;
+ }*/
+ importTimer?.Stop();
+ checkInTimer?.Stop();
+ }
+
+ /// <summary>
+ /// 鎻掍欢杩斿洖姝e父鏃剁殑澶勭悊
+ /// </summary>
+ private void HandleNormal()
+ {
+ err_count = 0;
+ StopInterceptTimer();
+ // alert.DoHide();
+ }
+
+ private bool IsSwRunning()
+ {
+ Process[] ps = Process.GetProcessesByName("SLDWORKS");
+ bool IsRunning = (ps != null && ps.Length > 0);
+ log.Debug($"Sw Is Running: {IsRunning}");
+ return IsRunning;
+ }
+
+ /// <summary>
+ /// 鎻掍欢杩斿洖寮傚父鏃剁殑澶勭悊
+ /// </summary>
+ private void HandleErr()
+ {
+ log.Debug($"err_count: {err_count}");
+ if (++err_count > 3)
+ {
+ if (IsSwRunning())
+ {
+ // 濡傛灉solidworks鍚姩
+ StartInterceptTimer();
+ log.Debug("Ready to show Msg.");
+ AlertMsg("璇峰惎鐢ㄦ彃浠跺苟鐧诲綍");
+ err_count = 3;
+ }
+ else
+ {
+ HandleNormal();
+ }
+ }
+ }
+
+
+ /// <summary>
+ /// 鎼滅储鏄惁鏈夊鍏ョ獥鍙o紝鏈夊氨涓�鐩存渶灏忓寲锛屽苟鎵ц瑙勫垯妫�鏌�
+ /// </summary>
+ /// <returns></returns>
+ private void ListenImportHandle()
+ {
+ IntPtr ptr = WindowIntPtrUtil.FindWindow(null, "Everything");//瀵煎叆鏂囨。
+ if (ptr == IntPtr.Zero)
+ {
+ return;
+ }
+ WindowIntPtrUtil.KillProcessByIntPtr(ptr);
+ }
+
+ /// <summary>
+ /// 鎼滅储鏄惁鏈夋鍏ョ獥鍙o紝鏈夊氨涓�鐩存渶灏忓寲锛屽苟鎵ц瑙勫垯妫�鏌�
+ /// </summary>
+ /// <returns></returns>
+ private void ListenCheckInHandle()
+ {
+ IntPtr ptr = WindowIntPtrUtil.FindWindow(null, "妫�鍏ユ枃妗�");
+ if (ptr == IntPtr.Zero)
+ {
+ return;
+ }
+ WindowIntPtrUtil.KillProcessByIntPtr(ptr);
+ }
+
+ private void Timer_Elapsed(object sender, ElapsedEventArgs e)
+ {
+ socketTimer.Stop();
+ try
+ {
+ if (!client.IsConnected)
+ {
+ client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5678));
+ }
+ else
+ {
+ var msg = Encoding.Default.GetBytes("HeatBeat");
+ client.Send(msg, 0, msg.Length);
+ }
+ }
+ catch (Exception ex)
+ {
+ HandleErr();
+ }
+ finally
+ {
+ socketTimer.Start();
+ }
+ }
+
+ /// <summary>
+ /// 鎺ユ敹鍒版秷鎭�
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void Client_DataReceived(object sender, DataEventArgs e)
+ {
+ byte flag = e.Data[0];
+ if (flag == 1)
+ {
+ HandleNormal();
+ }
+ else
+ {
+ log.Error("Plugin Return 0.");
+ HandleErr();
+ }
+ }
+
+ /// <summary>
+ /// 瀹㈡埛绔叧闂紝瑙嗕负寮傚父
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void Client_Closed(object sender, EventArgs e)
+ {
+ HandleErr();
+ }
+
+ /// <summary>
+ /// 瀹㈡埛绔紓甯�
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void Client_Error(object sender, SuperSocket.ClientEngine.ErrorEventArgs e)
+ {
+ HandleErr();
+ }
+
+ /// <summary>
+ /// 杩炴帴鍚庣殑鎿嶄綔
+ /// </summary>
+ /// <param name="sender"></param>
+ /// <param name="e"></param>
+ private void Client_Connected(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/SolidWorksListener/Properties/AssemblyInfo.cs b/SolidWorksListener/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..9e5310a
--- /dev/null
+++ b/SolidWorksListener/Properties/AssemblyInfo.cs
@@ -0,0 +1,52 @@
+锘縰sing System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// 鏈夊叧绋嬪簭闆嗙殑涓�鑸俊鎭敱浠ヤ笅
+// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("SolidWorksListener")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("SolidWorksListener")]
+[assembly: AssemblyCopyright("Copyright 漏 2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷
+//瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷
+//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+//鑻ヨ寮�濮嬬敓鎴愬彲鏈湴鍖栫殑搴旂敤绋嬪簭锛岃璁剧疆
+//.csproj 鏂囦欢涓殑 <UICulture>CultureYouAreCodingWith</UICulture>
+//鍦� <PropertyGroup> 涓�備緥濡傦紝濡傛灉浣犱娇鐢ㄧ殑鏄編鍥借嫳璇��
+//浣跨敤鐨勬槸缇庡浗鑻辫锛岃灏� <UICulture> 璁剧疆涓� en-US銆� 鐒跺悗鍙栨秷
+//瀵逛互涓� NeutralResourceLanguage 鐗规�х殑娉ㄩ噴銆� 鏇存柊
+//浠ヤ笅琛屼腑鐨勨�渆n-US鈥濅互鍖归厤椤圭洰鏂囦欢涓殑 UICulture 璁剧疆銆�
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //涓婚鐗瑰畾璧勬簮璇嶅吀鎵�澶勪綅缃�
+ //(鏈湪椤甸潰涓壘鍒拌祫婧愭椂浣跨敤锛�
+ //鎴栧簲鐢ㄧ▼搴忚祫婧愬瓧鍏镐腑鎵惧埌鏃朵娇鐢�)
+ ResourceDictionaryLocation.SourceAssembly //甯歌璧勬簮璇嶅吀鎵�澶勪綅缃�
+ //(鏈湪椤甸潰涓壘鍒拌祫婧愭椂浣跨敤锛�
+ //銆佸簲鐢ㄧ▼搴忔垨浠讳綍涓婚涓撶敤璧勬簮瀛楀吀涓壘鍒版椂浣跨敤)
+)]
+
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鐢熸垚鍙�
+// 淇鍙�
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/SolidWorksListener/Properties/Resources.Designer.cs b/SolidWorksListener/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..4e52da8
--- /dev/null
+++ b/SolidWorksListener/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�: 4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳藉鑷翠笉姝g‘鐨勮涓猴紝濡傛灉
+// 閲嶆柊鐢熸垚浠g爜锛屽垯鎵�鍋氭洿鏀瑰皢涓㈠け銆�
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace SolidWorksListener.Properties
+{
+
+
+ /// <summary>
+ /// 寮虹被鍨嬭祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲瀛楃涓茬瓑銆�
+ /// </summary>
+ // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+ // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+ // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+ // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ /// <summary>
+ /// 杩斿洖姝ょ被浣跨敤鐨勭紦瀛� ResourceManager 瀹炰緥銆�
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SolidWorksListener.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ /// <summary>
+ /// 閲嶅啓褰撳墠绾跨▼鐨� CurrentUICulture 灞炴�э紝瀵�
+ /// 浣跨敤姝ゅ己绫诲瀷璧勬簮绫荤殑鎵�鏈夎祫婧愭煡鎵炬墽琛岄噸鍐欍��
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/SolidWorksListener/Properties/Resources.resx b/SolidWorksListener/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/SolidWorksListener/Properties/Resources.resx
@@ -0,0 +1,117 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
diff --git a/SolidWorksListener/Properties/Settings.Designer.cs b/SolidWorksListener/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..3400b86
--- /dev/null
+++ b/SolidWorksListener/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace SolidWorksListener.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/SolidWorksListener/Properties/Settings.settings b/SolidWorksListener/Properties/Settings.settings
new file mode 100644
index 0000000..033d7a5
--- /dev/null
+++ b/SolidWorksListener/Properties/Settings.settings
@@ -0,0 +1,7 @@
+锘�<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
+ <Profiles>
+ <Profile Name="(Default)" />
+ </Profiles>
+ <Settings />
+</SettingsFile>
\ No newline at end of file
diff --git a/SolidWorksListener/SolidWorksListener.csproj b/SolidWorksListener/SolidWorksListener.csproj
new file mode 100644
index 0000000..4fc1e4a
--- /dev/null
+++ b/SolidWorksListener/SolidWorksListener.csproj
@@ -0,0 +1,198 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{CB3551F6-0C4A-4537-9A04-1E40CD475479}</ProjectGuid>
+ <OutputType>WinExe</OutputType>
+ <RootNamespace>SolidWorksListener</RootNamespace>
+ <AssemblyName>SolidWorksListener</AssemblyName>
+ <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <WarningLevel>4</WarningLevel>
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ <Deterministic>true</Deterministic>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\PdmSw\bin\x64\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>..\PdmSw\bin\x64\Debug\Listener\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <DebugType>full</DebugType>
+ <PlatformTarget>x64</PlatformTarget>
+ <LangVersion>7.3</LangVersion>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+ <OutputPath>..\PdmSw\bin\x64\Release\Listener\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <Optimize>true</Optimize>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>x64</PlatformTarget>
+ <LangVersion>7.3</LangVersion>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
+ <HintPath>..\packages\log4net.2.0.3\lib\net40-full\log4net.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.ClientEngine, Version=0.10.0.0, Culture=neutral, PublicKeyToken=ee9af13f57f00acc, processorArchitecture=MSIL">
+ <HintPath>..\packages\SuperSocket.ClientEngine.Core.0.10.0\lib\net45\SuperSocket.ClientEngine.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.Common, Version=1.6.6.1, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
+ <HintPath>..\packages\SuperSocket.1.6.6.1\lib\net45\SuperSocket.Common.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.Facility, Version=1.6.6.1, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
+ <HintPath>..\packages\SuperSocket.1.6.6.1\lib\net45\SuperSocket.Facility.dll</HintPath>
+ </Reference>
+ <Reference Include="SuperSocket.SocketBase, Version=1.6.6.1, Culture=neutral, PublicKeyToken=6c80000676988ebb, processorArchitecture=MSIL">
+ <HintPath>..\packages\SuperSocket.1.6.6.1\lib\net45\SuperSocket.SocketBase.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Collections.Specialized, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Collections.Specialized.4.3.0\lib\net46\System.Collections.Specialized.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.ComponentModel.Composition" />
+ <Reference Include="System.Configuration" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Linq, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Linq.4.3.0\lib\net463\System.Linq.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Net.NameResolution, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Net.NameResolution.4.3.0\lib\net46\System.Net.NameResolution.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Net.Security, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Net.Security.4.3.0\lib\net46\System.Net.Security.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Runtime.Extensions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Runtime.InteropServices, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Runtime.InteropServices.4.3.0\lib\net463\System.Runtime.InteropServices.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+ <HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
+ <Private>True</Private>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Xml" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xaml">
+ <RequiredTargetFramework>4.0</RequiredTargetFramework>
+ </Reference>
+ <Reference Include="WindowsBase" />
+ <Reference Include="PresentationCore" />
+ <Reference Include="PresentationFramework" />
+ </ItemGroup>
+ <ItemGroup>
+ <ApplicationDefinition Include="App.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </ApplicationDefinition>
+ <Compile Include="App.xaml.cs">
+ <DependentUpon>App.xaml</DependentUpon>
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="WindowUtil.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Listener.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Properties\Resources.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Resources.resx</DependentUpon>
+ </Compile>
+ <Compile Include="Properties\Settings.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DependentUpon>Settings.settings</DependentUpon>
+ <DesignTimeSharedInput>True</DesignTimeSharedInput>
+ </Compile>
+ <EmbeddedResource Include="Properties\Resources.resx">
+ <Generator>ResXFileCodeGenerator</Generator>
+ <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+ </EmbeddedResource>
+ <None Include="log4net.config">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </None>
+ <None Include="packages.config" />
+ <None Include="Properties\Settings.settings">
+ <Generator>SettingsSingleFileGenerator</Generator>
+ <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>
\ No newline at end of file
diff --git a/SolidWorksListener/WindowUtil.cs b/SolidWorksListener/WindowUtil.cs
new file mode 100644
index 0000000..1d7d7ef
--- /dev/null
+++ b/SolidWorksListener/WindowUtil.cs
@@ -0,0 +1,46 @@
+锘縰sing System;
+using System.Runtime.InteropServices;
+namespace SolidWorksListener
+{
+ public class WindowIntPtrUtil
+ {
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern IntPtr FindWindow(string className, string windowName);
+
+ [DllImport("user32.dll")]
+ public static extern IntPtr FindWindowByProcessId(int processId, int threadId);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern uint GetWindowThreadProcessId(IntPtr ptr, out uint processId);
+
+ /// <summary>
+ /// 鎿嶄綔绐楀彛 1鏄縺娲� 6鏄渶灏忓寲
+ /// </summary>
+ /// <param name="ptr"></param>
+ /// <param name="command">1鏄縺娲� 6鏄渶灏忓寲</param>
+ /// <returns></returns>
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern bool ShowWindow(IntPtr ptr, int command);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern bool SendMessage(IntPtr ptr, UInt32 Msg, IntPtr wParam, IntPtr lParam);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern bool PostMessage(IntPtr ptr, UInt32 Msg, IntPtr wParam, IntPtr lParam);
+
+ public static void KillProcessByIntPtr(IntPtr ptr)
+ {
+ //GetWindowThreadProcessId(ptr, out uint processId);
+ //if (processId == 0) return;
+ //Process process = Process.GetProcessById((int)processId);
+ //process.Kill();
+ //process.WaitForExit();
+ CloseWindow(ptr);
+ }
+
+ public static void CloseWindow(IntPtr ptr)
+ {
+ SendMessage(ptr, (UInt32)0x0010, IntPtr.Zero, IntPtr.Zero);
+ }
+ }
+}
diff --git a/SolidWorksListener/log4net.config b/SolidWorksListener/log4net.config
new file mode 100644
index 0000000..8b8684b
--- /dev/null
+++ b/SolidWorksListener/log4net.config
@@ -0,0 +1,37 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<log4net>
+ <!-- 鎺у埗鍙版棩蹇楅厤缃� -->
+ <appender name="Console" type="log4net.Appender.ConsoleAppender">
+ <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
+ <layout type="log4net.Layout.PatternLayout">
+ <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
+ </layout>
+ </appender>
+
+ <!-- 鏂囦欢瀛樺偍鏃ュ織閰嶇疆 -->
+ <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
+ <!-- 淇濆瓨鏂囦欢鐨勫悕绉� -->
+ <file value="./Log/" />
+ <appendToFile value="true" />
+ <rollingStyle value="Date" />
+ <datePattern value="'log_'yyyyMMdd'.log'"/>
+ <staticLogFileName value="false"/>
+
+ <!-- 鏂囦欢鐨勭紪鐮佹柟寮� -->
+ <param name="Encoding" value="UTF-8"/>
+ <!-- 姣忎釜鏂囦欢鐨勫ぇ灏� -->
+ <maximumFileSize value="100KB" />
+ <!-- 淇濆瓨鏂囦欢鏁伴噺 -->
+ <maxSizeRollBackups value="2" />
+ <!-- 鏃ュ織杈撳嚭鏍煎紡 -->
+ <layout type="log4net.Layout.PatternLayout">
+ <conversionPattern value="%date{ISO8601} [%logger] %level %class - %message%newline" />
+ </layout>
+ </appender>
+
+ <root>
+ <level value="DEBUG" />
+ <appender-ref ref="Console" />
+ <appender-ref ref="RollingFile" />
+ </root>
+</log4net>
\ No newline at end of file
diff --git a/SolidWorksListener/packages.config b/SolidWorksListener/packages.config
new file mode 100644
index 0000000..d4bc385
--- /dev/null
+++ b/SolidWorksListener/packages.config
@@ -0,0 +1,19 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="log4net" version="2.0.3" targetFramework="net472" />
+ <package id="SuperSocket" version="1.6.6.1" targetFramework="net472" />
+ <package id="SuperSocket.ClientEngine.Core" version="0.10.0" targetFramework="net472" />
+ <package id="System.Collections.Specialized" version="4.3.0" targetFramework="net472" />
+ <package id="System.IO" version="4.3.0" targetFramework="net472" />
+ <package id="System.Linq" version="4.3.0" targetFramework="net472" />
+ <package id="System.Net.NameResolution" version="4.3.0" targetFramework="net472" />
+ <package id="System.Net.Security" version="4.3.0" targetFramework="net472" />
+ <package id="System.Net.Sockets" version="4.3.0" targetFramework="net472" />
+ <package id="System.Runtime" version="4.3.0" targetFramework="net472" />
+ <package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net472" />
+ <package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net472" />
+ <package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net472" />
+ <package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net472" />
+ <package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net472" />
+ <package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net472" />
+</packages>
\ No newline at end of file
diff --git a/SolidWorksListenerAlert/App.config b/SolidWorksListenerAlert/App.config
new file mode 100644
index 0000000..56efbc7
--- /dev/null
+++ b/SolidWorksListenerAlert/App.config
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
+ </startup>
+</configuration>
\ No newline at end of file
diff --git a/SolidWorksListenerAlert/App.xaml b/SolidWorksListenerAlert/App.xaml
new file mode 100644
index 0000000..d44d69c
--- /dev/null
+++ b/SolidWorksListenerAlert/App.xaml
@@ -0,0 +1,9 @@
+锘�<Application x:Class="SolidWorksListenerAlert.App"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="clr-namespace:SolidWorksListenerAlert"
+ StartupUri="MainWindow.xaml">
+ <Application.Resources>
+
+ </Application.Resources>
+</Application>
diff --git a/SolidWorksListenerAlert/App.xaml.cs b/SolidWorksListenerAlert/App.xaml.cs
new file mode 100644
index 0000000..5d8c696
--- /dev/null
+++ b/SolidWorksListenerAlert/App.xaml.cs
@@ -0,0 +1,27 @@
+锘縰sing System.Windows;
+
+namespace SolidWorksListenerAlert
+{
+ /// <summary>
+ /// App.xaml 鐨勪氦浜掗�昏緫
+ /// </summary>
+ public partial class App : Application
+ {
+ private static System.Threading.Mutex mutex;
+ //绯荤粺鑳藉璇嗗埆鏈夊悕绉扮殑浜掓枼锛屽洜姝ゅ彲浠ヤ娇鐢ㄥ畠绂佹搴旂敤绋嬪簭鍚姩涓ゆ
+ //绗簩涓弬鏁板彲浠ヨ缃负浜у搧鐨勫悕绉�:Application.ProductName
+ // 姣忔鍚姩搴旂敤绋嬪簭锛岄兘浼氶獙璇佸悕绉颁负OnlyRun鐨勪簰鏂ユ槸鍚﹀瓨鍦�
+ protected override void OnStartup(StartupEventArgs e)
+ {
+ mutex = new System.Threading.Mutex(true, Application.Current.ToString());
+ if (mutex.WaitOne(0, false))
+ {
+ base.OnStartup(e);
+ }
+ else
+ {
+ this.Shutdown();
+ }
+ }
+ }
+}
diff --git a/SolidWorksListenerAlert/MainWindow.xaml b/SolidWorksListenerAlert/MainWindow.xaml
new file mode 100644
index 0000000..54a4b0f
--- /dev/null
+++ b/SolidWorksListenerAlert/MainWindow.xaml
@@ -0,0 +1,18 @@
+锘�<Window x:Class="SolidWorksListenerAlert.MainWindow"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:local="clr-namespace:SolidWorksListenerAlert"
+ mc:Ignorable="d"
+ Topmost="True"
+ ShowInTaskbar="False"
+ ResizeMode="NoResize"
+ WindowStartupLocation="CenterScreen"
+ WindowStyle="ToolWindow"
+ Title="鎻愮ず" Height="150" Width="200">
+ <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
+ <Label Margin="0,0,0,20">璇峰惎鐢ㄦ彃浠跺苟鐧诲綍锛�</Label>
+ <Button Click="Button_Click" Padding="8">鎴戠煡閬撲簡</Button>
+ </StackPanel>
+</Window>
diff --git a/SolidWorksListenerAlert/MainWindow.xaml.cs b/SolidWorksListenerAlert/MainWindow.xaml.cs
new file mode 100644
index 0000000..167bab2
--- /dev/null
+++ b/SolidWorksListenerAlert/MainWindow.xaml.cs
@@ -0,0 +1,34 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace SolidWorksListenerAlert
+{
+ /// <summary>
+ /// MainWindow.xaml 鐨勪氦浜掗�昏緫
+ /// </summary>
+ public partial class MainWindow : Window
+ {
+ public MainWindow()
+ {
+ Icon = new DrawingImage();
+ InitializeComponent();
+ }
+
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ Close();
+ }
+ }
+}
diff --git a/SolidWorksListenerAlert/Properties/AssemblyInfo.cs b/SolidWorksListenerAlert/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..7dfbc72
--- /dev/null
+++ b/SolidWorksListenerAlert/Properties/AssemblyInfo.cs
@@ -0,0 +1,52 @@
+锘縰sing System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// 鏈夊叧绋嬪簭闆嗙殑涓�鑸俊鎭敱浠ヤ笅
+// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("SolidWorksListenerAlert")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("SolidWorksListenerAlert")]
+[assembly: AssemblyCopyright("Copyright 漏 2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷
+//瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷
+//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+//鑻ヨ寮�濮嬬敓鎴愬彲鏈湴鍖栫殑搴旂敤绋嬪簭锛岃璁剧疆
+//.csproj 鏂囦欢涓殑 <UICulture>CultureYouAreCodingWith</UICulture>
+//鍦� <PropertyGroup> 涓�備緥濡傦紝濡傛灉浣犱娇鐢ㄧ殑鏄編鍥借嫳璇��
+//浣跨敤鐨勬槸缇庡浗鑻辫锛岃灏� <UICulture> 璁剧疆涓� en-US銆� 鐒跺悗鍙栨秷
+//瀵逛互涓� NeutralResourceLanguage 鐗规�х殑娉ㄩ噴銆� 鏇存柊
+//浠ヤ笅琛屼腑鐨勨�渆n-US鈥濅互鍖归厤椤圭洰鏂囦欢涓殑 UICulture 璁剧疆銆�
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //涓婚鐗瑰畾璧勬簮璇嶅吀鎵�澶勪綅缃�
+ //(鏈湪椤甸潰涓壘鍒拌祫婧愭椂浣跨敤锛�
+ //鎴栧簲鐢ㄧ▼搴忚祫婧愬瓧鍏镐腑鎵惧埌鏃朵娇鐢�)
+ ResourceDictionaryLocation.SourceAssembly //甯歌璧勬簮璇嶅吀鎵�澶勪綅缃�
+ //(鏈湪椤甸潰涓壘鍒拌祫婧愭椂浣跨敤锛�
+ //銆佸簲鐢ㄧ▼搴忔垨浠讳綍涓婚涓撶敤璧勬簮瀛楀吀涓壘鍒版椂浣跨敤)
+)]
+
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鐢熸垚鍙�
+// 淇鍙�
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/SolidWorksListenerAlert/Properties/Resources.Designer.cs b/SolidWorksListenerAlert/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..14a0bb6
--- /dev/null
+++ b/SolidWorksListenerAlert/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�: 4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳藉鑷翠笉姝g‘鐨勮涓猴紝濡傛灉
+// 閲嶆柊鐢熸垚浠g爜锛屽垯鎵�鍋氭洿鏀瑰皢涓㈠け銆�
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace SolidWorksListenerAlert.Properties
+{
+
+
+ /// <summary>
+ /// 寮虹被鍨嬭祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲瀛楃涓茬瓑銆�
+ /// </summary>
+ // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+ // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+ // 鑻ヨ娣诲姞鎴栫Щ闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+ // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ /// <summary>
+ /// 杩斿洖姝ょ被浣跨敤鐨勭紦瀛� ResourceManager 瀹炰緥銆�
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SolidWorksListenerAlert.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ /// <summary>
+ /// 閲嶅啓褰撳墠绾跨▼鐨� CurrentUICulture 灞炴�э紝瀵�
+ /// 浣跨敤姝ゅ己绫诲瀷璧勬簮绫荤殑鎵�鏈夎祫婧愭煡鎵炬墽琛岄噸鍐欍��
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/SolidWorksListenerAlert/Properties/Resources.resx b/SolidWorksListenerAlert/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/SolidWorksListenerAlert/Properties/Resources.resx
@@ -0,0 +1,117 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+</root>
\ No newline at end of file
diff --git a/SolidWorksListenerAlert/Properties/Settings.Designer.cs b/SolidWorksListenerAlert/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..a8fddad
--- /dev/null
+++ b/SolidWorksListenerAlert/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace SolidWorksListenerAlert.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/SolidWorksListenerAlert/Properties/Settings.settings b/SolidWorksListenerAlert/Properties/Settings.settings
new file mode 100644
index 0000000..033d7a5
--- /dev/null
+++ b/SolidWorksListenerAlert/Properties/Settings.settings
@@ -0,0 +1,7 @@
+锘�<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
+ <Profiles>
+ <Profile Name="(Default)" />
+ </Profiles>
+ <Settings />
+</SettingsFile>
\ No newline at end of file
diff --git a/SolidWorksListenerAlert/SolidWorksListenerAlert.csproj b/SolidWorksListenerAlert/SolidWorksListenerAlert.csproj
new file mode 100644
index 0000000..dc323a6
--- /dev/null
+++ b/SolidWorksListenerAlert/SolidWorksListenerAlert.csproj
@@ -0,0 +1,118 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{201D10C1-DC69-4B1A-B759-876E1B94A2BA}</ProjectGuid>
+ <OutputType>WinExe</OutputType>
+ <RootNamespace>SolidWorksListenerAlert</RootNamespace>
+ <AssemblyName>Alert</AssemblyName>
+ <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <WarningLevel>4</WarningLevel>
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ <Deterministic>true</Deterministic>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>..\PdmSw\bin\x64\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <DebugType>full</DebugType>
+ <PlatformTarget>x64</PlatformTarget>
+ <LangVersion>7.3</LangVersion>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+ <OutputPath>..\PdmSw\bin\x64\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <Optimize>true</Optimize>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>x64</PlatformTarget>
+ <LangVersion>7.3</LangVersion>
+ <ErrorReport>prompt</ErrorReport>
+ <Prefer32Bit>true</Prefer32Bit>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xaml">
+ <RequiredTargetFramework>4.0</RequiredTargetFramework>
+ </Reference>
+ <Reference Include="WindowsBase" />
+ <Reference Include="PresentationCore" />
+ <Reference Include="PresentationFramework" />
+ </ItemGroup>
+ <ItemGroup>
+ <ApplicationDefinition Include="App.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </ApplicationDefinition>
+ <Page Include="MainWindow.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
+ <Compile Include="App.xaml.cs">
+ <DependentUpon>App.xaml</DependentUpon>
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="MainWindow.xaml.cs">
+ <DependentUpon>MainWindow.xaml</DependentUpon>
+ <SubType>Code</SubType>
+ </Compile>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Properties\AssemblyInfo.cs">
+ <SubType>Code</SubType>
+ </Compile>
+ <Compile Include="Properties\Resources.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Resources.resx</DependentUpon>
+ </Compile>
+ <Compile Include="Properties\Settings.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DependentUpon>Settings.settings</DependentUpon>
+ <DesignTimeSharedInput>True</DesignTimeSharedInput>
+ </Compile>
+ <EmbeddedResource Include="Properties\Resources.resx">
+ <Generator>ResXFileCodeGenerator</Generator>
+ <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+ </EmbeddedResource>
+ <None Include="Properties\Settings.settings">
+ <Generator>SettingsSingleFileGenerator</Generator>
+ <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>
\ No newline at end of file
diff --git a/WpfUI/.vs/WpfUI.csproj.dtbcache.json b/WpfUI/.vs/WpfUI.csproj.dtbcache.json
index 6504198..2c980e7 100644
--- a/WpfUI/.vs/WpfUI.csproj.dtbcache.json
+++ b/WpfUI/.vs/WpfUI.csproj.dtbcache.json
@@ -1 +1 @@
-{"RootPath":"D:\\Workspace\\PdmSwPlugin2\\WpfUI","ProjectFileName":"WpfUI.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"AsyncAttacher.cs"},{"SourceFile":"Form1.cs"},{"SourceFile":"Form1.Designer.cs"},{"SourceFile":"Window1.xaml.cs"},{"SourceFile":"App.xaml.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"Properties\\Resources.Designer.cs"},{"SourceFile":"Properties\\Settings.Designer.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"},{"SourceFile":"D:\\Workspace\\PdmSwPlugin2\\WpfUI\\obj\\Debug\\Window1.g.cs"},{"SourceFile":"D:\\Workspace\\PdmSwPlugin2\\WpfUI\\obj\\Debug\\App.g.cs"},{"SourceFile":"D:\\Workspace\\PdmSwPlugin2\\WpfUI\\obj\\Debug\\WpfUI_Content.g.cs"}],"References":[{"Reference":"D:\\Workspace\\PdmSwPlugin2\\lib\\Interop.EModelView.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\lib\\log4net.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\IIS\\Microsoft Web Deploy V3\\Newtonsoft.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\bin\\Debug\\PdmSwPlugin.Common.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\bin\\Debug\\PdmSwPlugin.Common.dll"},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\bin\\Debug\\PdmSwPlugin.Main.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\bin\\Debug\\PdmSwPlugin.Main.dll"},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationCore.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationFramework.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.sldworks.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.swconst.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.swdocumentmgr.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.swpublished.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\solidworkstools.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\PublicAssemblies\\System.Buffers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.ComponentModel.DataAnnotations.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\PublicAssemblies\\System.Memory.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Numerics.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\PublicAssemblies\\System.Numerics.Vectors.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\PublicAssemblies\\System.Runtime.CompilerServices.Unsafe.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\PublicAssemblies\\System.Threading.Tasks.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\IDE\\PublicAssemblies\\System.ValueTuple.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Windows.Forms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xaml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\WindowsBase.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\WindowsFormsIntegration.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"D:\\Workspace\\PdmSwPlugin2\\WpfUI\\bin\\Debug\\WpfUI.exe","OutputItemRelativePath":"WpfUI.exe"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]}
\ No newline at end of file
+{"RootPath":"D:\\Workspace\\PdmSwPlugin2\\WpfUI","ProjectFileName":"WpfUI.csproj","Configuration":"Debug|x64","FrameworkPath":"","Sources":[{"SourceFile":"AsyncAttacher.cs"},{"SourceFile":"Form1.cs"},{"SourceFile":"Form1.Designer.cs"},{"SourceFile":"Window1.xaml.cs"},{"SourceFile":"App.xaml.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"Properties\\Resources.Designer.cs"},{"SourceFile":"Properties\\Settings.Designer.cs"},{"SourceFile":"obj\\x64\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"},{"SourceFile":"D:\\Workspace\\PdmSwPlugin2\\WpfUI\\obj\\x64\\Debug\\Window1.g.cs"},{"SourceFile":"D:\\Workspace\\PdmSwPlugin2\\WpfUI\\obj\\x64\\Debug\\App.g.cs"},{"SourceFile":"D:\\Workspace\\PdmSwPlugin2\\WpfUI\\obj\\x64\\Debug\\WpfUI_Content.g.cs"}],"References":[{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\DuEDrawingControl.1.0.2\\lib\\net461\\DuEDrawingControl.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\lib\\Interop.EModelView.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\lib\\log4net.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\Microsoft.Bcl.AsyncInterfaces.7.0.0\\lib\\net462\\Microsoft.Bcl.AsyncInterfaces.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\Microsoft.Extensions.DependencyInjection.Abstractions.7.0.0\\lib\\net462\\Microsoft.Extensions.DependencyInjection.Abstractions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\Microsoft.Extensions.DependencyInjection.7.0.0\\lib\\net462\\Microsoft.Extensions.DependencyInjection.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\Microsoft.Extensions.Http.7.0.0\\lib\\net462\\Microsoft.Extensions.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\Microsoft.Extensions.Logging.Abstractions.7.0.0\\lib\\net462\\Microsoft.Extensions.Logging.Abstractions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\Microsoft.Extensions.Logging.7.0.0\\lib\\net462\\Microsoft.Extensions.Logging.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\Microsoft.Extensions.Options.7.0.0\\lib\\net462\\Microsoft.Extensions.Options.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\Microsoft.Extensions.Primitives.7.0.0\\lib\\net462\\Microsoft.Extensions.Primitives.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\Newtonsoft.Json.13.0.3\\lib\\net45\\Newtonsoft.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\bin\\x64\\Debug\\PdmSwPlugin.Common.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Common\\bin\\x64\\Debug\\PdmSwPlugin.Common.dll"},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\bin\\x64\\Debug\\PdmSwPlugin.Main.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":true,"ProjectPath":"D:\\Workspace\\PdmSwPlugin2\\PdmSwPlugin.Main\\bin\\x64\\Debug\\PdmSwPlugin.Main.dll"},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationCore.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationFramework.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.sldworks.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.swconst.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.swdocumentmgr.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\api\\redist\\SolidWorks.Interop.swpublished.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files\\SOLIDWORKS Corp\\SOLIDWORKS\\solidworkstools.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\System.Buffers.4.5.1\\lib\\net461\\System.Buffers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.ComponentModel.DataAnnotations.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\System.Diagnostics.DiagnosticSource.7.0.0\\lib\\net462\\System.Diagnostics.DiagnosticSource.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\System.Memory.4.5.5\\lib\\net461\\System.Memory.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Numerics.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\System.Numerics.Vectors.4.5.0\\lib\\net46\\System.Numerics.Vectors.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\System.Runtime.CompilerServices.Unsafe.6.0.0\\lib\\net461\\System.Runtime.CompilerServices.Unsafe.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\System.Text.Encodings.Web.7.0.0\\lib\\net462\\System.Text.Encodings.Web.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\System.Threading.Tasks.Extensions.4.5.4\\lib\\net461\\System.Threading.Tasks.Extensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"D:\\Workspace\\PdmSwPlugin2\\PdmSw\\packages\\System.ValueTuple.4.5.0\\lib\\net47\\System.ValueTuple.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Web.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Windows.Forms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xaml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\WindowsBase.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\WindowsFormsIntegration.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"D:\\Workspace\\PdmSwPlugin2\\WpfUI\\bin\\x64\\Debug\\WpfUI.exe","OutputItemRelativePath":"WpfUI.exe"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]}
\ No newline at end of file
diff --git a/WpfUI/Window1.xaml.cs b/WpfUI/Window1.xaml.cs
index 208bd77..68f9cd9 100644
--- a/WpfUI/Window1.xaml.cs
+++ b/WpfUI/Window1.xaml.cs
@@ -24,8 +24,6 @@
GlobalConfig = PluginSetting.Instance;
}
-
-
private void Button_Click(object sender, RoutedEventArgs e)
{
if (SwApp != null)
@@ -41,7 +39,7 @@
mainControl = new MainControl(SwApp);
mainControl.Loaded += MainControl_Loaded;
stack.Children.Add(mainControl);
-
+
}
catch (COMException ex)
{
diff --git a/lib/SuperSocket.Common.XML b/lib/SuperSocket.Common.XML
new file mode 100644
index 0000000..1118eca
--- /dev/null
+++ b/lib/SuperSocket.Common.XML
@@ -0,0 +1,1346 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>SuperSocket.Common</name>
+ </assembly>
+ <members>
+ <member name="P:SuperSocket.Common.ArraySegmentEx`1.Array">
+ <summary>
+ Gets the array.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Common.ArraySegmentEx`1.Count">
+ <summary>
+ Gets the count.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Common.ArraySegmentEx`1.Offset">
+ <summary>
+ Gets the offset.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Common.ArraySegmentList`1">
+ <summary>
+ ArraySegmentList
+ </summary>
+ <typeparam name="T"></typeparam>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Common.ArraySegmentList`1"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.IndexOf(`0)">
+ <summary>
+ Determines the index of a specific item in the <see cref="T:System.Collections.Generic.IList`1"/>.
+ </summary>
+ <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.IList`1"/>.</param>
+ <returns>
+ The index of <paramref name="item"/> if found in the list; otherwise, -1.
+ </returns>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.Insert(System.Int32,`0)">
+ <summary>
+ NotSupported
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.RemoveAt(System.Int32)">
+ <summary>
+ NotSupported
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.Add(`0)">
+ <summary>
+ NotSupported
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.Clear">
+ <summary>
+ NotSupported
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.Contains(`0)">
+ <summary>
+ NotSupported
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.CopyTo(`0[],System.Int32)">
+ <summary>
+ Copies to.
+ </summary>
+ <param name="array">The array.</param>
+ <param name="arrayIndex">Index of the array.</param>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.Remove(`0)">
+ <summary>
+ NotSupported
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.GetEnumerator">
+ <summary>
+ NotSupported
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.System#Collections#IEnumerable#GetEnumerator">
+ <summary>
+ NotSupported
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.RemoveSegmentAt(System.Int32)">
+ <summary>
+ Removes the segment at.
+ </summary>
+ <param name="index">The index.</param>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.AddSegment(`0[],System.Int32,System.Int32)">
+ <summary>
+ Adds the segment to the list.
+ </summary>
+ <param name="array">The array.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.AddSegment(`0[],System.Int32,System.Int32,System.Boolean)">
+ <summary>
+ Adds the segment to the list.
+ </summary>
+ <param name="array">The array.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.ClearSegements">
+ <summary>
+ Clears all the segements.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.ToArrayData">
+ <summary>
+ Read all data in this list to the array data.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.ToArrayData(System.Int32,System.Int32)">
+ <summary>
+ Read the data in specific range to the array data.
+ </summary>
+ <param name="startIndex">The start index.</param>
+ <param name="length">The length.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.TrimEnd(System.Int32)">
+ <summary>
+ Trims the end.
+ </summary>
+ <param name="trimSize">Size of the trim.</param>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.SearchLastSegment(SuperSocket.Common.SearchMarkState{`0})">
+ <summary>
+ Searches the last segment.
+ </summary>
+ <param name="state">The state.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.CopyTo(`0[])">
+ <summary>
+ Copies to.
+ </summary>
+ <param name="to">To.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList`1.CopyTo(`0[],System.Int32,System.Int32,System.Int32)">
+ <summary>
+ Copies to.
+ </summary>
+ <param name="to">To.</param>
+ <param name="srcIndex">Index of the SRC.</param>
+ <param name="toIndex">To index.</param>
+ <param name="length">The length.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.Common.ArraySegmentList`1.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <returns>
+ The element at the specified index.
+ </returns>
+
+ <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="index"/> is not a valid index in the <see cref="T:System.Collections.Generic.IList`1"/>.
+ </exception>
+
+ <exception cref="T:System.NotSupportedException">
+ The property is set and the <see cref="T:System.Collections.Generic.IList`1"/> is read-only.
+ </exception>
+ </member>
+ <member name="P:SuperSocket.Common.ArraySegmentList`1.Count">
+ <summary>
+ Gets the number of elements contained in the <see cref="T:System.Collections.Generic.ICollection`1"/>.
+ </summary>
+ <returns>
+ The number of elements contained in the <see cref="T:System.Collections.Generic.ICollection`1"/>.
+ </returns>
+ </member>
+ <member name="P:SuperSocket.Common.ArraySegmentList`1.IsReadOnly">
+ <summary>
+ Gets a value indicating whether the <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only.
+ </summary>
+ <returns>true if the <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only; otherwise, false.
+ </returns>
+ </member>
+ <member name="P:SuperSocket.Common.ArraySegmentList`1.SegmentCount">
+ <summary>
+ Gets the segment count.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Common.ArraySegmentList">
+ <summary>
+ ArraySegmentList
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList.Decode(System.Text.Encoding)">
+ <summary>
+ Decodes bytes to string by the specified encoding.
+ </summary>
+ <param name="encoding">The encoding.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList.Decode(System.Text.Encoding,System.Int32,System.Int32)">
+ <summary>
+ Decodes bytes to string by the specified encoding.
+ </summary>
+ <param name="encoding">The encoding.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.ArraySegmentList.DecodeMask(System.Byte[],System.Int32,System.Int32)">
+ <summary>
+ Decodes data by the mask.
+ </summary>
+ <param name="mask">The mask.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ </member>
+ <member name="T:SuperSocket.Common.AssemblyUtil">
+ <summary>
+ Assembly Util Class
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.AssemblyUtil.CreateInstance``1(System.String)">
+ <summary>
+ Creates the instance from type name.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="type">The type.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.AssemblyUtil.CreateInstance``1(System.String,System.Object[])">
+ <summary>
+ Creates the instance from type name and parameters.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="type">The type.</param>
+ <param name="parameters">The parameters.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.AssemblyUtil.GetType(System.String,System.Boolean,System.Boolean)">
+ <summary>
+ Gets the type by the full name, also return matched generic type without checking generic type parameters in the name.
+ </summary>
+ <param name="fullTypeName">Full name of the type.</param>
+ <param name="throwOnError">if set to <c>true</c> [throw on error].</param>
+ <param name="ignoreCase">if set to <c>true</c> [ignore case].</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.AssemblyUtil.GetImplementTypes``1(System.Reflection.Assembly)">
+ <summary>
+ Gets the implement types from assembly.
+ </summary>
+ <typeparam name="TBaseType">The type of the base type.</typeparam>
+ <param name="assembly">The assembly.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.AssemblyUtil.GetImplementedObjectsByInterface``1(System.Reflection.Assembly)">
+ <summary>
+ Gets the implemented objects by interface.
+ </summary>
+ <typeparam name="TBaseInterface">The type of the base interface.</typeparam>
+ <param name="assembly">The assembly.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.AssemblyUtil.GetImplementedObjectsByInterface``1(System.Reflection.Assembly,System.Type)">
+ <summary>
+ Gets the implemented objects by interface.
+ </summary>
+ <typeparam name="TBaseInterface">The type of the base interface.</typeparam>
+ <param name="assembly">The assembly.</param>
+ <param name="targetType">Type of the target.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.AssemblyUtil.BinaryClone``1(``0)">
+ <summary>
+ Clone object in binary format.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="target">The target.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.AssemblyUtil.CopyPropertiesTo``1(``0,``0)">
+ <summary>
+ Copies the properties of one object to another object.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="target">The target.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.AssemblyUtil.CopyPropertiesTo``1(``0,System.Predicate{System.Reflection.PropertyInfo},``0)">
+ <summary>
+ Copies the properties of one object to another object.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="predict">The properties predict.</param>
+ <param name="target">The target.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.AssemblyUtil.GetAssembliesFromString(System.String)">
+ <summary>
+ Gets the assemblies from string.
+ </summary>
+ <param name="assemblyDef">The assembly def.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.AssemblyUtil.GetAssembliesFromStrings(System.String[])">
+ <summary>
+ Gets the assemblies from strings.
+ </summary>
+ <param name="assemblies">The assemblies.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.Common.BinaryUtil">
+ <summary>
+ Binary util class
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.IndexOf``1(System.Collections.Generic.IList{``0},``0,System.Int32,System.Int32)">
+ <summary>
+ Search target from source.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="target">The target.</param>
+ <param name="pos">The pos.</param>
+ <param name="length">The length.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.SearchMark``1(System.Collections.Generic.IList{``0},``0[],System.Int32@)">
+ <summary>
+ Searches the mark from source.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="mark">The mark.</param>
+ <param name="parsedLength">Length of the parsed.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.SearchMark``1(System.Collections.Generic.IList{``0},``0[])">
+ <summary>
+ Searches the mark from source.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="mark">The mark.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.SearchMark``1(System.Collections.Generic.IList{``0},System.Int32,System.Int32,``0[])">
+ <summary>
+ Searches the mark from source.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="mark">The mark.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.SearchMark``1(System.Collections.Generic.IList{``0},System.Int32,System.Int32,``0[],System.Int32@)">
+ <summary>
+ Searches the mark from source.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="mark">The mark.</param>
+ <param name="parsedLength">Length of the parsed.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.SearchMark``1(System.Collections.Generic.IList{``0},System.Int32,System.Int32,``0[],System.Int32)">
+ <summary>
+ Searches the mark from source.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="mark">The mark.</param>
+ <param name="matched">The matched.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.SearchMark``1(System.Collections.Generic.IList{``0},System.Int32,System.Int32,``0[],System.Int32,System.Int32@)">
+ <summary>
+ Searches the mark from source.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="mark">The mark.</param>
+ <param name="matched">The matched.</param>
+ <param name="parsedLength">Length of the parsed.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.SearchMark``1(System.Collections.Generic.IList{``0},System.Int32,System.Int32,SuperSocket.Common.SearchMarkState{``0},System.Int32@)">
+ <summary>
+ Searches the mark from source.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="searchState">State of the search.</param>
+ <param name="parsedLength">Length of the parsed.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.SearchMark``1(System.Collections.Generic.IList{``0},System.Int32,System.Int32,SuperSocket.Common.SearchMarkState{``0})">
+ <summary>
+ Searches the mark from source.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="searchState">State of the search.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.StartsWith``1(System.Collections.Generic.IList{``0},``0[])">
+ <summary>
+ Startses the with.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="mark">The mark.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.StartsWith``1(System.Collections.Generic.IList{``0},System.Int32,System.Int32,``0[])">
+ <summary>
+ Startses the with.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="mark">The mark.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.EndsWith``1(System.Collections.Generic.IList{``0},``0[])">
+ <summary>
+ Endses the with.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="mark">The mark.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.EndsWith``1(System.Collections.Generic.IList{``0},System.Int32,System.Int32,``0[])">
+ <summary>
+ Endses the with.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="mark">The mark.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.BinaryUtil.CloneRange``1(System.Collections.Generic.IList{``0},System.Int32,System.Int32)">
+ <summary>
+ Clones the elements in the specific range.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="source">The source.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.Common.BufferManager">
+ <summary>
+ This class creates a single large buffer which can be divided up and assigned to SocketAsyncEventArgs objects for use
+ with each socket I/O operation. This enables bufffers to be easily reused and gaurds against fragmenting heap memory.
+
+ The operations exposed on the BufferManager class are not thread safe.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.BufferManager.#ctor(System.Int32,System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Common.BufferManager"/> class.
+ </summary>
+ <param name="totalBytes">The total bytes.</param>
+ <param name="bufferSize">Size of the buffer.</param>
+ </member>
+ <member name="M:SuperSocket.Common.BufferManager.InitBuffer">
+ <summary>
+ Allocates buffer space used by the buffer pool
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.BufferManager.SetBuffer(System.Net.Sockets.SocketAsyncEventArgs)">
+ <summary>
+ Assigns a buffer from the buffer pool to the specified SocketAsyncEventArgs object
+ </summary>
+ <returns>true if the buffer was successfully set, else false</returns>
+ </member>
+ <member name="M:SuperSocket.Common.BufferManager.FreeBuffer(System.Net.Sockets.SocketAsyncEventArgs)">
+ <summary>
+ Removes the buffer from a SocketAsyncEventArg object. This frees the buffer back to the
+ buffer pool
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Common.ConfigurationElementBase">
+ <summary>
+ ConfigurationElementBase
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationElementBase.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Common.ConfigurationElementBase"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationElementBase.#ctor(System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Common.ConfigurationElementBase"/> class.
+ </summary>
+ <param name="nameRequired">if set to <c>true</c> [name required].</param>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationElementBase.DeserializeElement(System.Xml.XmlReader,System.Boolean)">
+ <summary>
+ Reads XML from the configuration file.
+ </summary>
+ <param name="reader">The <see cref="T:System.Xml.XmlReader"/> that reads from the configuration file.</param>
+ <param name="serializeCollectionKey">true to serialize only the collection key properties; otherwise, false.</param>
+ <exception cref="T:System.Configuration.ConfigurationErrorsException">The element to read is locked.- or -An attribute of the current node is not recognized.- or -The lock status of the current node cannot be determined. </exception>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationElementBase.OnDeserializeUnrecognizedAttribute(System.String,System.String)">
+ <summary>
+ Gets a value indicating whether an unknown attribute is encountered during deserialization.
+ </summary>
+ <param name="name">The name of the unrecognized attribute.</param>
+ <param name="value">The value of the unrecognized attribute.</param>
+ <returns>
+ true when an unknown attribute is encountered while deserializing; otherwise, false.
+ </returns>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationElementBase.Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,System.Configuration.ConfigurationSaveMode)">
+ <summary>
+ Modifies the <see cref="T:System.Configuration.ConfigurationElement" /> object to remove all values that should not be saved.
+ </summary>
+ <param name="sourceElement">A <see cref="T:System.Configuration.ConfigurationElement" /> at the current level containing a merged view of the properties.</param>
+ <param name="parentElement">The parent <see cref="T:System.Configuration.ConfigurationElement" />, or null if this is the top level.</param>
+ <param name="saveMode">A <see cref="T:System.Configuration.ConfigurationSaveMode" /> that determines which property values to include.</param>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationElementBase.SerializeElement(System.Xml.XmlWriter,System.Boolean)">
+ <summary>
+ Writes the contents of this configuration element to the configuration file when implemented in a derived class.
+ </summary>
+ <param name="writer">The <see cref="T:System.Xml.XmlWriter" /> that writes to the configuration file.</param>
+ <param name="serializeCollectionKey">true to serialize only the collection key properties; otherwise, false.</param>
+ <returns>
+ true if any data was actually serialized; otherwise, false.
+ </returns>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationElementBase.OnDeserializeUnrecognizedElement(System.String,System.Xml.XmlReader)">
+ <summary>
+ Gets a value indicating whether an unknown element is encountered during deserialization.
+ </summary>
+ <param name="elementName">The name of the unknown subelement.</param>
+ <param name="reader">The <see cref="T:System.Xml.XmlReader"/> being used for deserialization.</param>
+ <returns>
+ true when an unknown element is encountered while deserializing; otherwise, false.
+ </returns>
+ <exception cref="T:System.Configuration.ConfigurationErrorsException">The element identified by <paramref name="elementName"/> is locked.- or -One or more of the element's attributes is locked.- or -<paramref name="elementName"/> is unrecognized, or the element has an unrecognized attribute.- or -The element has a Boolean attribute with an invalid value.- or -An attempt was made to deserialize a property more than once.- or -An attempt was made to deserialize a property that is not a valid member of the element.- or -The element cannot contain a CDATA or text element.</exception>
+ </member>
+ <member name="P:SuperSocket.Common.ConfigurationElementBase.Name">
+ <summary>
+ Gets the name.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Common.ConfigurationElementBase.Options">
+ <summary>
+ Gets the options.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Common.ConfigurationElementBase.OptionElements">
+ <summary>
+ Gets the option elements.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Common.ConfigurationExtension">
+ <summary>
+ Configuration extension class
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationExtension.GetValue(System.Collections.Specialized.NameValueCollection,System.String)">
+ <summary>
+ Gets the value from namevalue collection by key.
+ </summary>
+ <param name="collection">The collection.</param>
+ <param name="key">The key.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationExtension.GetValue(System.Collections.Specialized.NameValueCollection,System.String,System.String)">
+ <summary>
+ Gets the value from namevalue collection by key.
+ </summary>
+ <param name="collection">The collection.</param>
+ <param name="key">The key.</param>
+ <param name="defaultValue">The default value.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationExtension.Deserialize``1(``0,System.Xml.XmlReader)">
+ <summary>
+ Deserializes the specified configuration section.
+ </summary>
+ <typeparam name="TElement">The type of the element.</typeparam>
+ <param name="section">The section.</param>
+ <param name="reader">The reader.</param>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationExtension.DeserializeChildConfig``1(System.String)">
+ <summary>
+ Deserializes the child configuration.
+ </summary>
+ <typeparam name="TConfig">The type of the configuration.</typeparam>
+ <param name="childConfig">The child configuration string.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationExtension.GetChildConfig``1(System.Collections.Specialized.NameValueCollection,System.String)">
+ <summary>
+ Gets the child config.
+ </summary>
+ <typeparam name="TConfig">The type of the config.</typeparam>
+ <param name="childElements">The child elements.</param>
+ <param name="childConfigName">Name of the child config.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationExtension.GetConfigSource(System.Configuration.ConfigurationElement)">
+ <summary>
+ Gets the config source path.
+ </summary>
+ <param name="config">The config.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationExtension.LoadFrom(System.Configuration.ConfigurationElement,System.Object)">
+ <summary>
+ Loads configuration element's node information from a model.
+ </summary>
+ <param name="configElement">The config element.</param>
+ <param name="source">The source.</param>
+ <exception cref="T:System.Exception">Cannot find expected property 'Item' from the type 'ConfigurationElement'.</exception>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationExtension.GetCurrentConfiguration(System.Configuration.ConfigurationElement)">
+ <summary>
+ Gets the current configuration of the configuration element.
+ </summary>
+ <returns>The current configuration.</returns>
+ <param name="configElement">Configuration element.</param>
+ </member>
+ <member name="M:SuperSocket.Common.ConfigurationExtension.ResetConfiguration(System.AppDomain,System.String)">
+ <summary>
+ Reset application's configuration to a another config file
+ </summary>
+ <param name="appDomain">the assosiated AppDomain</param>
+ <param name="configFilePath">the config file path want to reset to</param>
+ </member>
+ <member name="T:SuperSocket.Common.DictionaryExtension">
+ <summary>
+ Extension class for IDictionary
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.DictionaryExtension.GetValue``1(System.Collections.Generic.IDictionary{System.Object,System.Object},System.Object)">
+ <summary>
+ Gets the value by key.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="dictionary">The dictionary.</param>
+ <param name="key">The key.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.DictionaryExtension.GetValue``1(System.Collections.Generic.IDictionary{System.Object,System.Object},System.Object,``0)">
+ <summary>
+ Gets the value by key and default value.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="dictionary">The dictionary.</param>
+ <param name="key">The key.</param>
+ <param name="defaultValue">The default value.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.Common.ErrorEventArgs">
+ <summary>
+ EventArgs for error and exception
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.ErrorEventArgs.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Common.ErrorEventArgs"/> class.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.Common.ErrorEventArgs.#ctor(System.Exception)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Common.ErrorEventArgs"/> class.
+ </summary>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="P:SuperSocket.Common.ErrorEventArgs.Exception">
+ <summary>
+ Gets the exception.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Common.GenericConfigurationElementCollectionBase`2">
+ <summary>
+ GenericConfigurationElementCollectionBase
+ </summary>
+ <typeparam name="TConfigElement">The type of the config element.</typeparam>
+ <typeparam name="TConfigInterface">The type of the config interface.</typeparam>
+ </member>
+ <member name="M:SuperSocket.Common.GenericConfigurationElementCollectionBase`2.CreateNewElement">
+ <summary>
+ When overridden in a derived class, creates a new <see cref="T:System.Configuration.ConfigurationElement"/>.
+ </summary>
+ <returns>
+ A new <see cref="T:System.Configuration.ConfigurationElement"/>.
+ </returns>
+ </member>
+ <member name="M:SuperSocket.Common.GenericConfigurationElementCollectionBase`2.GetElementKey(System.Configuration.ConfigurationElement)">
+ <summary>
+ Gets the element key for a specified configuration element when overridden in a derived class.
+ </summary>
+ <param name="element">The <see cref="T:System.Configuration.ConfigurationElement"/> to return the key for.</param>
+ <returns>
+ An <see cref="T:System.Object"/> that acts as the key for the specified <see cref="T:System.Configuration.ConfigurationElement"/>.
+ </returns>
+ </member>
+ <member name="M:SuperSocket.Common.GenericConfigurationElementCollectionBase`2.GetEnumerator">
+ <summary>
+ Returns an enumerator that iterates through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
+ </returns>
+ </member>
+ <member name="P:SuperSocket.Common.GenericConfigurationElementCollectionBase`2.Item(System.Int32)">
+ <summary>
+ Gets or sets a property, attribute, or child element of this configuration element.
+ </summary>
+ <returns>The specified property, attribute, or child element</returns>
+ </member>
+ <member name="T:SuperSocket.Common.GenericConfigurationElementCollection`2">
+ <summary>
+ GenericConfigurationElementCollection
+ </summary>
+ <typeparam name="TConfigElement">The type of the config element.</typeparam>
+ <typeparam name="TConfigInterface">The type of the config interface.</typeparam>
+ </member>
+ <member name="M:SuperSocket.Common.GenericConfigurationElementCollection`2.GetElementKey(System.Configuration.ConfigurationElement)">
+ <summary>
+ Gets the element key.
+ </summary>
+ <param name="element">The element.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.Common.Platform">
+ <summary>
+ This class is designed for detect platform attribute in runtime
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Common.Platform.SupportSocketIOControlByCodeEnum">
+ <summary>
+ Gets a value indicating whether [support socket IO control by code enum].
+ </summary>
+ <value>
+ <c>true</c> if [support socket IO control by code enum]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Common.Platform.IsMono">
+ <summary>
+ Gets a value indicating whether this instance is mono.
+ </summary>
+ <value>
+ <c>true</c> if this instance is mono; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="T:SuperSocket.Common.SearchMarkState`1">
+ <summary>
+ SearchMarkState
+ </summary>
+ <typeparam name="T"></typeparam>
+ </member>
+ <member name="M:SuperSocket.Common.SearchMarkState`1.#ctor(`0[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Common.SearchMarkState`1"/> class.
+ </summary>
+ <param name="mark">The mark.</param>
+ </member>
+ <member name="P:SuperSocket.Common.SearchMarkState`1.Mark">
+ <summary>
+ Gets the mark.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Common.SearchMarkState`1.Matched">
+ <summary>
+ Gets or sets whether matched already.
+ </summary>
+ <value>
+ The matched.
+ </value>
+ </member>
+ <member name="T:SuperSocket.Common.SendingQueue">
+ <summary>
+ SendingQueue
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.#ctor(System.ArraySegment{System.Byte}[],System.Int32,System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Common.SendingQueue"/> class.
+ </summary>
+ <param name="globalQueue">The global queue.</param>
+ <param name="offset">The offset.</param>
+ <param name="capacity">The capacity.</param>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.Enqueue(System.ArraySegment{System.Byte},System.UInt16)">
+ <summary>
+ Enqueues the specified item.
+ </summary>
+ <param name="item">The item.</param>
+ <param name="trackID">The track ID.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.Enqueue(System.Collections.Generic.IList{System.ArraySegment{System.Byte}},System.UInt16)">
+ <summary>
+ Enqueues the specified items.
+ </summary>
+ <param name="items">The items.</param>
+ <param name="trackID">The track ID.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.StopEnqueue">
+ <summary>
+ Stops the enqueue, and then wait all current excueting enqueu threads exit.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.StartEnqueue">
+ <summary>
+ Starts to allow enqueue.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.IndexOf(System.ArraySegment{System.Byte})">
+ <summary>
+ Determines the index of a specific item in the <see cref="T:System.Collections.Generic.IList`1"/>.
+ </summary>
+ <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.IList`1"/>.</param>
+ <returns>
+ The index of <paramref name="item"/> if found in the list; otherwise, -1.
+ </returns>
+ <exception cref="T:System.NotSupportedException"></exception>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.Insert(System.Int32,System.ArraySegment{System.Byte})">
+ <summary>
+ Inserts an item to the <see cref="T:System.Collections.Generic.IList`1"/> at the specified index.
+ </summary>
+ <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
+ <param name="item">The object to insert into the <see cref="T:System.Collections.Generic.IList`1"/>.</param>
+ <exception cref="T:System.NotSupportedException"></exception>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.RemoveAt(System.Int32)">
+ <summary>
+ Removes the <see cref="T:System.Collections.Generic.IList`1"/> item at the specified index.
+ </summary>
+ <param name="index">The zero-based index of the item to remove.</param>
+ <exception cref="T:System.NotSupportedException"></exception>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.Add(System.ArraySegment{System.Byte})">
+ <summary>
+ Adds an item to the <see cref="T:System.Collections.Generic.ICollection`1"/>.
+ </summary>
+ <param name="item">The object to add to the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
+ <exception cref="T:System.NotSupportedException"></exception>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.Clear">
+ <summary>
+ Removes all items from the <see cref="T:System.Collections.Generic.ICollection`1"/>.
+ </summary>
+ <exception cref="T:System.NotSupportedException"></exception>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.Contains(System.ArraySegment{System.Byte})">
+ <summary>
+ Determines whether the <see cref="T:System.Collections.Generic.ICollection`1"/> contains a specific value.
+ </summary>
+ <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
+ <returns>
+ true if <paramref name="item"/> is found in the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false.
+ </returns>
+ <exception cref="T:System.NotSupportedException"></exception>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.CopyTo(System.ArraySegment{System.Byte}[],System.Int32)">
+ <summary>
+ Copies to.
+ </summary>
+ <param name="array">The array.</param>
+ <param name="arrayIndex">Index of the array.</param>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.Remove(System.ArraySegment{System.Byte})">
+ <summary>
+ Removes the first occurrence of a specific object from the <see cref="T:System.Collections.Generic.ICollection`1"/>.
+ </summary>
+ <param name="item">The object to remove from the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
+ <returns>
+ true if <paramref name="item"/> was successfully removed from the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false. This method also returns false if <paramref name="item"/> is not found in the original <see cref="T:System.Collections.Generic.ICollection`1"/>.
+ </returns>
+ <exception cref="T:System.NotSupportedException"></exception>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.GetEnumerator">
+ <summary>
+ Returns an enumerator that iterates through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
+ </returns>
+ <exception cref="T:System.NotSupportedException"></exception>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.System#Collections#IEnumerable#GetEnumerator">
+ <summary>
+ Returns an enumerator that iterates through a collection.
+ </summary>
+ <returns>
+ An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
+ </returns>
+ <exception cref="T:System.NotSupportedException"></exception>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueue.InternalTrim(System.Int32)">
+ <summary>
+ Trim the internal segments at the begining by the binary data size.
+ </summary>
+ <param name="offset">The binary data size should be trimed at the begining.</param>
+ </member>
+ <member name="P:SuperSocket.Common.SendingQueue.TrackID">
+ <summary>
+ Gets the track ID.
+ </summary>
+ <value>
+ The track ID.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Common.SendingQueue.GlobalQueue">
+ <summary>
+ Gets the global queue.
+ </summary>
+ <value>
+ The global queue.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Common.SendingQueue.Offset">
+ <summary>
+ Gets the offset.
+ </summary>
+ <value>
+ The offset.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Common.SendingQueue.Capacity">
+ <summary>
+ Gets the capacity.
+ </summary>
+ <value>
+ The capacity.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Common.SendingQueue.Count">
+ <summary>
+ Gets the number of elements contained in the <see cref="T:System.Collections.Generic.ICollection`1" />.
+ </summary>
+ <returns>The number of elements contained in the <see cref="T:System.Collections.Generic.ICollection`1" />.</returns>
+ </member>
+ <member name="P:SuperSocket.Common.SendingQueue.Position">
+ <summary>
+ Gets or sets the position.
+ </summary>
+ <value>
+ The position.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Common.SendingQueue.Item(System.Int32)">
+ <summary>
+ Gets or sets the element at the specified index.
+ </summary>
+ <param name="index">The index.</param>
+ <returns></returns>
+ <exception cref="T:System.NotSupportedException"></exception>
+ </member>
+ <member name="P:SuperSocket.Common.SendingQueue.IsReadOnly">
+ <summary>
+ Gets a value indicating whether the <see cref="T:System.Collections.Generic.ICollection`1" /> is read-only.
+ </summary>
+ <returns>true if the <see cref="T:System.Collections.Generic.ICollection`1" /> is read-only; otherwise, false.</returns>
+ </member>
+ <member name="T:SuperSocket.Common.SendingQueueSourceCreator">
+ <summary>
+ SendingQueueSourceCreator
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Common.ISmartPoolSourceCreator`1">
+ <summary>
+ ISmartPoolSourceCreator
+ </summary>
+ <typeparam name="T"></typeparam>
+ </member>
+ <member name="M:SuperSocket.Common.ISmartPoolSourceCreator`1.Create(System.Int32,`0[]@)">
+ <summary>
+ Creates the specified size.
+ </summary>
+ <param name="size">The size.</param>
+ <param name="poolItems">The pool items.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueueSourceCreator.#ctor(System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Common.SendingQueueSourceCreator"/> class.
+ </summary>
+ <param name="sendingQueueSize">Size of the sending queue.</param>
+ </member>
+ <member name="M:SuperSocket.Common.SendingQueueSourceCreator.Create(System.Int32,SuperSocket.Common.SendingQueue[]@)">
+ <summary>
+ Creates the specified size.
+ </summary>
+ <param name="size">The size.</param>
+ <param name="poolItems">The pool items.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.Common.IPoolInfo">
+ <summary>
+ The pool information class
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Common.IPoolInfo.MinPoolSize">
+ <summary>
+ Gets the min size of the pool.
+ </summary>
+ <value>
+ The min size of the pool.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Common.IPoolInfo.MaxPoolSize">
+ <summary>
+ Gets the max size of the pool.
+ </summary>
+ <value>
+ The max size of the pool.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Common.IPoolInfo.AvialableItemsCount">
+ <summary>
+ Gets the avialable items count.
+ </summary>
+ <value>
+ The avialable items count.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Common.IPoolInfo.TotalItemsCount">
+ <summary>
+ Gets the total items count, include items in the pool and outside the pool.
+ </summary>
+ <value>
+ The total items count.
+ </value>
+ </member>
+ <member name="T:SuperSocket.Common.ISmartPool`1">
+ <summary>
+ The basic interface of smart pool
+ </summary>
+ <typeparam name="T"></typeparam>
+ </member>
+ <member name="M:SuperSocket.Common.ISmartPool`1.Initialize(System.Int32,System.Int32,SuperSocket.Common.ISmartPoolSourceCreator{`0})">
+ <summary>
+ Initializes the specified min pool size.
+ </summary>
+ <param name="minPoolSize">The min size of the pool.</param>
+ <param name="maxPoolSize">The max size of the pool.</param>
+ <param name="sourceCreator">The source creator.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.ISmartPool`1.Push(`0)">
+ <summary>
+ Pushes the specified item into the pool.
+ </summary>
+ <param name="item">The item.</param>
+ </member>
+ <member name="M:SuperSocket.Common.ISmartPool`1.TryGet(`0@)">
+ <summary>
+ Tries to get one item from the pool.
+ </summary>
+ <param name="item">The item.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.Common.ISmartPoolSource">
+ <summary>
+ ISmartPoolSource
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Common.ISmartPoolSource.Count">
+ <summary>
+ Gets the count.
+ </summary>
+ <value>
+ The count.
+ </value>
+ </member>
+ <member name="T:SuperSocket.Common.SmartPoolSource">
+ <summary>
+ SmartPoolSource
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.SmartPoolSource.#ctor(System.Object,System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Common.SmartPoolSource"/> class.
+ </summary>
+ <param name="source">The source.</param>
+ <param name="itemsCount">The items count.</param>
+ </member>
+ <member name="P:SuperSocket.Common.SmartPoolSource.Source">
+ <summary>
+ Gets the source.
+ </summary>
+ <value>
+ The source.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Common.SmartPoolSource.Count">
+ <summary>
+ Gets the count.
+ </summary>
+ <value>
+ The count.
+ </value>
+ </member>
+ <member name="T:SuperSocket.Common.SmartPool`1">
+ <summary>
+ The smart pool
+ </summary>
+ <typeparam name="T"></typeparam>
+ </member>
+ <member name="M:SuperSocket.Common.SmartPool`1.Initialize(System.Int32,System.Int32,SuperSocket.Common.ISmartPoolSourceCreator{`0})">
+ <summary>
+ Initializes the specified min and max pool size.
+ </summary>
+ <param name="minPoolSize">The min size of the pool.</param>
+ <param name="maxPoolSize">The max size of the pool.</param>
+ <param name="sourceCreator">The source creator.</param>
+ </member>
+ <member name="M:SuperSocket.Common.SmartPool`1.Push(`0)">
+ <summary>
+ Pushes the specified item into the pool.
+ </summary>
+ <param name="item">The item.</param>
+ </member>
+ <member name="M:SuperSocket.Common.SmartPool`1.TryGet(`0@)">
+ <summary>
+ Tries to get one item from the pool.
+ </summary>
+ <param name="item">The item.</param>
+ <returns></returns>
+ <exception cref="T:System.NotImplementedException"></exception>
+ </member>
+ <member name="P:SuperSocket.Common.SmartPool`1.MinPoolSize">
+ <summary>
+ Gets the size of the min pool.
+ </summary>
+ <value>
+ The size of the min pool.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Common.SmartPool`1.MaxPoolSize">
+ <summary>
+ Gets the size of the max pool.
+ </summary>
+ <value>
+ The size of the max pool.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Common.SmartPool`1.AvialableItemsCount">
+ <summary>
+ Gets the avialable items count.
+ </summary>
+ <value>
+ The avialable items count.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Common.SmartPool`1.TotalItemsCount">
+ <summary>
+ Gets the total items count, include items in the pool and outside the pool.
+ </summary>
+ <value>
+ The total items count.
+ </value>
+ </member>
+ <member name="T:SuperSocket.Common.SocketEx">
+ <summary>
+ Socket extension class
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.SocketEx.SafeClose(System.Net.Sockets.Socket)">
+ <summary>
+ Close the socket safely.
+ </summary>
+ <param name="socket">The socket.</param>
+ </member>
+ <member name="M:SuperSocket.Common.SocketEx.SendData(System.Net.Sockets.Socket,System.Byte[])">
+ <summary>
+ Sends the data.
+ </summary>
+ <param name="client">The client.</param>
+ <param name="data">The data.</param>
+ </member>
+ <member name="M:SuperSocket.Common.SocketEx.SendData(System.Net.Sockets.Socket,System.Byte[],System.Int32,System.Int32)">
+ <summary>
+ Sends the data.
+ </summary>
+ <param name="client">The client.</param>
+ <param name="data">The data.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ </member>
+ <member name="T:SuperSocket.Common.StringExtension">
+ <summary>
+ String extension class
+ </summary>
+ <summary>
+ String extension
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.StringExtension.ToInt32(System.String)">
+ <summary>
+ Convert string to int32.
+ </summary>
+ <param name="source">The source.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.StringExtension.ToInt32(System.String,System.Int32)">
+ <summary>
+ Convert string to int32.
+ </summary>
+ <param name="source">The source.</param>
+ <param name="defaultValue">The default value.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.StringExtension.ToLong(System.String)">
+ <summary>
+ Convert string to long.
+ </summary>
+ <param name="source">The source.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.StringExtension.ToLong(System.String,System.Int64)">
+ <summary>
+ Convert string to long.
+ </summary>
+ <param name="source">The source.</param>
+ <param name="defaultValue">The default value.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.StringExtension.ToShort(System.String)">
+ <summary>
+ Convert string to short.
+ </summary>
+ <param name="source">The source.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.StringExtension.ToShort(System.String,System.Int16)">
+ <summary>
+ Convert string to short.
+ </summary>
+ <param name="source">The source.</param>
+ <param name="defaultValue">The default value.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.StringExtension.ToDecimal(System.String)">
+ <summary>
+ Convert string to decimal.
+ </summary>
+ <param name="source">The source.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.StringExtension.ToDecimal(System.String,System.Decimal)">
+ <summary>
+ Convert string to decimal.
+ </summary>
+ <param name="source">The source.</param>
+ <param name="defaultValue">The default value.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.StringExtension.ToDateTime(System.String)">
+ <summary>
+ Convert string to date time.
+ </summary>
+ <param name="source">The source.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.StringExtension.ToDateTime(System.String,System.DateTime)">
+ <summary>
+ Convert string to date time.
+ </summary>
+ <param name="source">The source.</param>
+ <param name="defaultValue">The default value.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.StringExtension.ToBoolean(System.String)">
+ <summary>
+ Convert string to boolean.
+ </summary>
+ <param name="source">The source.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.StringExtension.ToBoolean(System.String,System.Boolean)">
+ <summary>
+ Convert string tp boolean.
+ </summary>
+ <param name="source">The source.</param>
+ <param name="defaultValue">if set to <c>true</c> [default value].</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Common.StringExtension.TryParseEnum``1(System.String,System.Boolean,``0@)">
+ <summary>
+ Tries parse string to enum.
+ </summary>
+ <typeparam name="T">the enum type</typeparam>
+ <param name="value">The value.</param>
+ <param name="ignoreCase">if set to <c>true</c> [ignore case].</param>
+ <param name="enumValue">The enum value.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.Common.TheadPoolEx">
+ <summary>
+ Thread pool extension class
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Common.TheadPoolEx.ResetThreadPool(System.Nullable{System.Int32},System.Nullable{System.Int32},System.Nullable{System.Int32},System.Nullable{System.Int32})">
+ <summary>
+ Resets the thread pool.
+ </summary>
+ <param name="maxWorkingThreads">The max working threads.</param>
+ <param name="maxCompletionPortThreads">The max completion port threads.</param>
+ <param name="minWorkingThreads">The min working threads.</param>
+ <param name="minCompletionPortThreads">The min completion port threads.</param>
+ <returns></returns>
+ </member>
+ </members>
+</doc>
diff --git a/lib/SuperSocket.Common.dll b/lib/SuperSocket.Common.dll
new file mode 100644
index 0000000..0fea68f
--- /dev/null
+++ b/lib/SuperSocket.Common.dll
Binary files differ
diff --git a/lib/SuperSocket.Facility.XML b/lib/SuperSocket.Facility.XML
new file mode 100644
index 0000000..0f66d5b
--- /dev/null
+++ b/lib/SuperSocket.Facility.XML
@@ -0,0 +1,601 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>SuperSocket.Facility</name>
+ </assembly>
+ <members>
+ <member name="T:SuperSocket.Facility.PolicyServer.FlashPolicyServer">
+ <summary>
+ Flash policy AppServer
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Facility.PolicyServer.PolicyServer">
+ <summary>
+ PolicyServer base class
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.PolicyServer.PolicyServer.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.PolicyServer.PolicyServer"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.PolicyServer.PolicyServer.Setup(SuperSocket.SocketBase.Config.IRootConfig,SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Setups the specified root config.
+ </summary>
+ <param name="rootConfig">The root config.</param>
+ <param name="config">The config.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.PolicyServer.PolicyServer.SetupPolicyResponse(System.Byte[])">
+ <summary>
+ Setups the policy response.
+ </summary>
+ <param name="policyFileData">The policy file data.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.PolicyServer.PolicyServer.GetPolicyFileResponse(System.Net.IPEndPoint)">
+ <summary>
+ Gets the policy file response.
+ </summary>
+ <param name="clientEndPoint">The client end point.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.PolicyServer.PolicyServer.ProcessRequest(SuperSocket.Facility.PolicyServer.PolicySession,System.Byte[])">
+ <summary>
+ Processes the request.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="data">The data.</param>
+ </member>
+ <member name="P:SuperSocket.Facility.PolicyServer.PolicyServer.PolicyResponse">
+ <summary>
+ Gets the policy response.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.PolicyServer.FlashPolicyServer.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.PolicyServer.FlashPolicyServer"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.PolicyServer.FlashPolicyServer.SetupPolicyResponse(System.Byte[])">
+ <summary>
+ Setups the policy response.
+ </summary>
+ <param name="policyFileData">The policy file data.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.Facility.PolicyServer.PolicyReceiveFilter">
+ <summary>
+ PolicyReceiveFilter
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Facility.Protocol.FixedSizeReceiveFilter`1">
+ <summary>
+ FixedSizeReceiveFilter
+ </summary>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="F:SuperSocket.Facility.Protocol.FixedSizeReceiveFilter`1.NullRequestInfo">
+ <summary>
+ Null RequestInfo
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.FixedSizeReceiveFilter`1.#ctor(System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.Protocol.FixedSizeReceiveFilter`1"/> class.
+ </summary>
+ <param name="size">The size.</param>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.FixedSizeReceiveFilter`1.Filter(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Int32@)">
+ <summary>
+ Filters the specified session.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <param name="rest">The rest.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.FixedSizeReceiveFilter`1.ProcessMatchedRequest(System.Byte[],System.Int32,System.Int32,System.Boolean)">
+ <summary>
+ Filters the buffer after the server receive the enough size of data.
+ </summary>
+ <param name="buffer">The buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.FixedSizeReceiveFilter`1.Reset">
+ <summary>
+ Resets this instance.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.FixedSizeReceiveFilter`1.Size">
+ <summary>
+ Gets the size of the fixed size Receive filter.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.FixedSizeReceiveFilter`1.LeftBufferSize">
+ <summary>
+ Gets the size of the rest buffer.
+ </summary>
+ <value>
+ The size of the rest buffer.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.FixedSizeReceiveFilter`1.NextReceiveFilter">
+ <summary>
+ Gets the next Receive filter.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.FixedSizeReceiveFilter`1.SuperSocket#SocketBase#Protocol#IOffsetAdapter#OffsetDelta">
+ <summary>
+ Gets the offset delta.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.FixedSizeReceiveFilter`1.State">
+ <summary>
+ Gets the filter state.
+ </summary>
+ <value>
+ The filter state.
+ </value>
+ </member>
+ <member name="M:SuperSocket.Facility.PolicyServer.PolicyReceiveFilter.#ctor(System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.PolicyServer.PolicyReceiveFilter"/> class.
+ </summary>
+ <param name="size">The size.</param>
+ </member>
+ <member name="M:SuperSocket.Facility.PolicyServer.PolicyReceiveFilter.ProcessMatchedRequest(System.Byte[],System.Int32,System.Int32,System.Boolean)">
+ <summary>
+ Filters the buffer after the server receive the enough size of data.
+ </summary>
+ <param name="buffer">The buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.PolicyServer.PolicyReceiveFilterFactory.#ctor(System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.PolicyServer.PolicyReceiveFilterFactory"/> class.
+ </summary>
+ <param name="fixRequestSize">Size of the fix request.</param>
+ </member>
+ <member name="M:SuperSocket.Facility.PolicyServer.PolicyReceiveFilterFactory.CreateFilter(SuperSocket.SocketBase.IAppServer,SuperSocket.SocketBase.IAppSession,System.Net.IPEndPoint)">
+ <summary>
+ Creates the filter.
+ </summary>
+ <param name="appServer">The app server.</param>
+ <param name="appSession">The app session.</param>
+ <param name="remoteEndPoint">The remote end point.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.Facility.PolicyServer.PolicyReceiveFilterFactory.FixRequestSize">
+ <summary>
+ Gets the size of the fix request.
+ </summary>
+ <value>
+ The size of the fix request.
+ </value>
+ </member>
+ <member name="T:SuperSocket.Facility.PolicyServer.PolicySession">
+ <summary>
+ PolicySession
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Facility.PolicyServer.SilverlightPolicyServer">
+ <summary>
+ Silverlight policy AppServer
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.PolicyServer.SilverlightPolicyServer.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.PolicyServer.SilverlightPolicyServer"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.PolicyServer.SilverlightPolicyServer.ProcessRequest(SuperSocket.Facility.PolicyServer.PolicySession,System.Byte[])">
+ <summary>
+ Processes the request.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="data">The data.</param>
+ </member>
+ <member name="T:SuperSocket.Facility.Protocol.BeginEndMarkReceiveFilter`1">
+ <summary>
+ ReceiveFilter for the protocol that each request has bengin and end mark
+ </summary>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="F:SuperSocket.Facility.Protocol.BeginEndMarkReceiveFilter`1.NullRequestInfo">
+ <summary>
+ Null request info
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.BeginEndMarkReceiveFilter`1.#ctor(System.Byte[],System.Byte[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.Protocol.BeginEndMarkReceiveFilter`1"/> class.
+ </summary>
+ <param name="beginMark">The begin mark.</param>
+ <param name="endMark">The end mark.</param>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.BeginEndMarkReceiveFilter`1.Filter(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Int32@)">
+ <summary>
+ Filters the specified session.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <param name="rest">The rest.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.BeginEndMarkReceiveFilter`1.ProcessMatchedRequest(System.Byte[],System.Int32,System.Int32)">
+ <summary>
+ Processes the matched request.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.BeginEndMarkReceiveFilter`1.Reset">
+ <summary>
+ Resets this instance.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter`1">
+ <summary>
+ This Receive filter is designed for this kind protocol:
+ each request has fixed count part which splited by a char(byte)
+ for instance, request is defined like this "#12122#23343#4545456565#343435446#",
+ because this request is splited into many parts by 5 '#', we can create a Receive filter by CountSpliterRequestFilter((byte)'#', 5)
+ </summary>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="F:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter`1.NullRequestInfo">
+ <summary>
+ Null request info instance
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter`1.#ctor(System.Byte,System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter`1"/> class.
+ </summary>
+ <param name="spliter">The spliter.</param>
+ <param name="spliterCount">The spliter count.</param>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter`1.Filter(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Int32@)">
+ <summary>
+ Filters the specified session.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <param name="rest">The rest.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter`1.ProcessMatchedRequest(System.Byte[],System.Int32,System.Int32)">
+ <summary>
+ Processes the matched request.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter`1.Reset">
+ <summary>
+ Resets this instance.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter`1.LeftBufferSize">
+ <summary>
+ Gets the size of the rest buffer.
+ </summary>
+ <value>
+ The size of the rest buffer.
+ </value>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter`1.NextReceiveFilter">
+ <summary>
+ Gets the next Receive filter.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter`1.OffsetDelta">
+ <summary>
+ Gets the offset delta relative original receiving offset which will be used for next round receiving.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter`1.State">
+ <summary>
+ Gets the filter state.
+ </summary>
+ <value>
+ The filter state.
+ </value>
+ </member>
+ <member name="T:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter">
+ <summary>
+ This Receive filter is designed for this kind protocol:
+ each request has fixed count part which splited by a char(byte)
+ for instance, request is defined like this "#12122#23343#4545456565#343435446#",
+ because this request is splited into many parts by 5 '#', we can create a Receive filter by CountSpliterRequestFilter((byte)'#', 5)
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter.#ctor(System.Byte,System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter"/> class.
+ </summary>
+ <param name="spliter">The spliter.</param>
+ <param name="spliterCount">The spliter count.</param>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter.#ctor(System.Byte,System.Int32,System.Text.Encoding)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter"/> class.
+ </summary>
+ <param name="spliter">The spliter.</param>
+ <param name="spliterCount">The spliter count.</param>
+ <param name="encoding">The encoding.</param>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter.#ctor(System.Byte,System.Int32,System.Text.Encoding,System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter"/> class.
+ </summary>
+ <param name="spliter">The spliter.</param>
+ <param name="spliterCount">The spliter count.</param>
+ <param name="encoding">The encoding.</param>
+ <param name="keyIndex">Index of the key.</param>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.CountSpliterReceiveFilter.ProcessMatchedRequest(System.Byte[],System.Int32,System.Int32)">
+ <summary>
+ Processes the matched request.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.Facility.Protocol.CountSpliterReceiveFilterFactory`2">
+ <summary>
+ ReceiveFilterFactory for CountSpliterReceiveFilter
+ </summary>
+ <typeparam name="TRequestFilter">The type of the Receive filter.</typeparam>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.CountSpliterReceiveFilterFactory`2.CreateFilter(SuperSocket.SocketBase.IAppServer,SuperSocket.SocketBase.IAppSession,System.Net.IPEndPoint)">
+ <summary>
+ Creates the filter.
+ </summary>
+ <param name="appServer">The app server.</param>
+ <param name="appSession">The app session.</param>
+ <param name="remoteEndPoint">The remote end point.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.Facility.Protocol.CountSpliterReceiveFilterFactory`1">
+ <summary>
+ ReceiveFilterFactory for CountSpliterReceiveFilter
+ </summary>
+ <typeparam name="TRequestFilter">The type of the Receive filter.</typeparam>
+ </member>
+ <member name="T:SuperSocket.Facility.Protocol.CountSpliterReceiveFilterFactory">
+ <summary>
+ receiveFilterFactory for CountSpliterRequestFilter
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.CountSpliterReceiveFilterFactory.#ctor(System.Byte,System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.Protocol.CountSpliterReceiveFilterFactory"/> class.
+ </summary>
+ <param name="spliter">The spliter.</param>
+ <param name="count">The count.</param>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.CountSpliterReceiveFilterFactory.CreateFilter(SuperSocket.SocketBase.IAppServer,SuperSocket.SocketBase.IAppSession,System.Net.IPEndPoint)">
+ <summary>
+ Creates the filter.
+ </summary>
+ <param name="appServer">The app server.</param>
+ <param name="appSession">The app session.</param>
+ <param name="remoteEndPoint">The remote end point.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.Facility.Protocol.FixedHeaderReceiveFilter`1">
+ <summary>
+ FixedHeaderReceiveFilter,
+ it is the Receive filter base for the protocol which define fixed length header and the header contains the request body length,
+ you can implement your own Receive filter for this kind protocol easily by inheriting this class
+ </summary>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.FixedHeaderReceiveFilter`1.#ctor(System.Int32)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.Protocol.FixedHeaderReceiveFilter`1"/> class.
+ </summary>
+ <param name="headerSize">Size of the header.</param>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.FixedHeaderReceiveFilter`1.Filter(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Int32@)">
+ <summary>
+ Filters the specified session.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <param name="rest">The rest.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.FixedHeaderReceiveFilter`1.ProcessMatchedRequest(System.Byte[],System.Int32,System.Int32,System.Boolean)">
+ <summary>
+ Processes the fix size request.
+ </summary>
+ <param name="buffer">The buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.FixedHeaderReceiveFilter`1.GetBodyLengthFromHeader(System.Byte[],System.Int32,System.Int32)">
+ <summary>
+ Gets the body length from header.
+ </summary>
+ <param name="header">The header.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.FixedHeaderReceiveFilter`1.ResolveRequestInfo(System.ArraySegment{System.Byte},System.Byte[],System.Int32,System.Int32)">
+ <summary>
+ Resolves the request data.
+ </summary>
+ <param name="header">The header.</param>
+ <param name="bodyBuffer">The body buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.FixedHeaderReceiveFilter`1.Reset">
+ <summary>
+ Resets this instance.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Facility.Protocol.HttpReceiveFilterBase`1">
+ <summary>
+ HttpReceiveFilterBase
+ </summary>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="F:SuperSocket.Facility.Protocol.HttpReceiveFilterBase`1.NewLine">
+ <summary>
+ Http header terminator
+ </summary>
+ </member>
+ <member name="F:SuperSocket.Facility.Protocol.HttpReceiveFilterBase`1.m_HeaderParsed">
+ <summary>
+ indicate whether the header has been parsed
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.HttpReceiveFilterBase`1.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.Protocol.HttpReceiveFilterBase`1"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.HttpReceiveFilterBase`1.Filter(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Int32@)">
+ <summary>
+ Filters the specified session.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <param name="rest">The rest.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.HttpReceiveFilterBase`1.FilterRequestBody(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Int32@)">
+ <summary>
+ Filters the request body.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <param name="rest">The rest data size.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.HttpReceiveFilterBase`1.ProcessMatchedRequest(System.Byte[],System.Int32,System.Int32)">
+ <summary>
+ Resolves the specified data.
+ </summary>
+ <param name="data">The data.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.HttpReceiveFilterBase`1.FilterRequestHeader(System.Collections.Specialized.NameValueCollection)">
+ <summary>
+ Filters the request header.
+ </summary>
+ <param name="header">The header.</param>
+ <returns>
+ return the parsed request info from header; if the request has body, this method should return null
+ </returns>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.HttpReceiveFilterBase`1.Reset">
+ <summary>
+ Resets this instance to inital state.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.HttpReceiveFilterBase`1.HeaderItems">
+ <summary>
+ Gets the header items.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Facility.Protocol.IHttpRequestInfo">
+ <summary>
+ IHttpRequestInfo
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.IHttpRequestInfo.Header">
+ <summary>
+ Gets the http header.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Facility.Protocol.HttpRequestInfoBase">
+ <summary>
+ HttpRequestInfoBase
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.HttpRequestInfoBase.#ctor(System.String,System.Collections.Specialized.NameValueCollection)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.Protocol.HttpRequestInfoBase"/> class.
+ </summary>
+ <param name="key">The key.</param>
+ <param name="header">The header.</param>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.HttpRequestInfoBase.Key">
+ <summary>
+ Gets the key of this request.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.HttpRequestInfoBase.Header">
+ <summary>
+ Gets the http header.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Facility.Protocol.HttpRequestInfoBase`1">
+ <summary>
+ HttpRequestInfoBase
+ </summary>
+ <typeparam name="TRequestBody">The type of the request body.</typeparam>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.HttpRequestInfoBase`1.#ctor(System.String,System.Collections.Specialized.NameValueCollection,`0)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.Facility.Protocol.HttpRequestInfoBase`1"/> class.
+ </summary>
+ <param name="key">The key.</param>
+ <param name="header">The header.</param>
+ <param name="body">The body.</param>
+ </member>
+ <member name="P:SuperSocket.Facility.Protocol.HttpRequestInfoBase`1.Body">
+ <summary>
+ Gets the body.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.Facility.Protocol.MimeHeaderHelper">
+ <summary>
+ MimeHeader Helper class
+ </summary>
+ </member>
+ <member name="M:SuperSocket.Facility.Protocol.MimeHeaderHelper.ParseHttpHeader(System.String,System.Collections.Specialized.NameValueCollection)">
+ <summary>
+ Parses the HTTP header.
+ </summary>
+ <param name="headerData">The header data.</param>
+ <param name="header">The header.</param>
+ </member>
+ </members>
+</doc>
diff --git a/lib/SuperSocket.Facility.dll b/lib/SuperSocket.Facility.dll
new file mode 100644
index 0000000..d92108e
--- /dev/null
+++ b/lib/SuperSocket.Facility.dll
Binary files differ
diff --git a/lib/SuperSocket.SocketBase.XML b/lib/SuperSocket.SocketBase.XML
new file mode 100644
index 0000000..32883d9
--- /dev/null
+++ b/lib/SuperSocket.SocketBase.XML
@@ -0,0 +1,5405 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>SuperSocket.SocketBase</name>
+ </assembly>
+ <members>
+ <member name="T:SuperSocket.SocketBase.AppServerBase`2">
+ <summary>
+ AppServer base class
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IAppServer`2">
+ <summary>
+ The interface for AppServer
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IAppServer`1">
+ <summary>
+ The interface for AppServer
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IAppServer">
+ <summary>
+ The interface for AppServer
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IWorkItem">
+ <summary>
+ An item can be started and stopped
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IWorkItemBase">
+ <summary>
+ An item can be started and stopped
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IStatusInfoSource">
+ <summary>
+ StatusInfo source interface
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IStatusInfoSource.GetServerStatusMetadata">
+ <summary>
+ Gets the server status metadata.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IStatusInfoSource.CollectServerStatus(SuperSocket.SocketBase.StatusInfoCollection)">
+ <summary>
+ Collects the bootstrap status.
+ </summary>
+ <param name="bootstrapStatus">The bootstrap status.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.SocketBase.ISystemEndPoint">
+ <summary>
+ The interface for endpoint who can send/receive system message with each other
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.ISystemEndPoint.TransferSystemMessage(System.String,System.Object)">
+ <summary>
+ Transfers the system message.
+ </summary>
+ <param name="messageType">Type of the message.</param>
+ <param name="messageData">The message data.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IWorkItemBase.Start">
+ <summary>
+ Starts this server instance.
+ </summary>
+ <returns>return true if start successfull, else false</returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IWorkItemBase.ReportPotentialConfigChange(SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Reports the potential configuration change.
+ </summary>
+ <param name="config">The server config which may be changed.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IWorkItemBase.Stop">
+ <summary>
+ Stops this server instance.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IWorkItemBase.Name">
+ <summary>
+ Gets the name.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IWorkItemBase.Config">
+ <summary>
+ Gets the server's config.
+ </summary>
+ <value>
+ The server's config.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IWorkItemBase.SessionCount">
+ <summary>
+ Gets the total session count.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IWorkItem.Setup(SuperSocket.SocketBase.IBootstrap,SuperSocket.SocketBase.Config.IServerConfig,SuperSocket.SocketBase.Provider.ProviderFactoryInfo[])">
+ <summary>
+ Setups with the specified root config.
+ </summary>
+ <param name="bootstrap">The bootstrap.</param>
+ <param name="config">The socket server instance config.</param>
+ <param name="factories">The factories.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IWorkItem.State">
+ <summary>
+ Gets the current state of the work item.
+ </summary>
+ <value>
+ The state.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.ILoggerProvider">
+ <summary>
+ The interface for who provides logger
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ILoggerProvider.Logger">
+ <summary>
+ Gets the logger assosiated with this object.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IAppServer.CreateAppSession(SuperSocket.SocketBase.ISocketSession)">
+ <summary>
+ Creates the app session.
+ </summary>
+ <param name="socketSession">The socket session.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IAppServer.RegisterSession(SuperSocket.SocketBase.IAppSession)">
+ <summary>
+ Registers the new created app session into the appserver's session container.
+ </summary>
+ <param name="session">The session.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IAppServer.GetSessionByID(System.String)">
+ <summary>
+ Gets the app session by ID.
+ </summary>
+ <param name="sessionID">The session ID.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IAppServer.ResetSessionSecurity(SuperSocket.SocketBase.IAppSession,System.Security.Authentication.SslProtocols)">
+ <summary>
+ Resets the session's security protocol.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="security">The security protocol.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppServer.StartedTime">
+ <summary>
+ Gets the started time.
+ </summary>
+ <value>
+ The started time.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppServer.Listeners">
+ <summary>
+ Gets or sets the listeners.
+ </summary>
+ <value>
+ The listeners.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppServer.ReceiveFilterFactory">
+ <summary>
+ Gets the Receive filter factory.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppServer.Certificate">
+ <summary>
+ Gets the certificate of current server.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppServer.BasicSecurity">
+ <summary>
+ Gets the transfer layer security protocol.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppServer.LogFactory">
+ <summary>
+ Gets the log factory.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IAppServer`1.GetSessions(System.Func{`0,System.Boolean})">
+ <summary>
+ Gets the matched sessions from sessions snapshot.
+ </summary>
+ <param name="critera">The prediction critera.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IAppServer`1.GetAllSessions">
+ <summary>
+ Gets all sessions in sessions snapshot.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="E:SuperSocket.SocketBase.IAppServer`1.NewSessionConnected">
+ <summary>
+ Gets/sets the new session connected event handler.
+ </summary>
+ </member>
+ <member name="E:SuperSocket.SocketBase.IAppServer`1.SessionClosed">
+ <summary>
+ Gets/sets the session closed event handler.
+ </summary>
+ </member>
+ <member name="E:SuperSocket.SocketBase.IAppServer`2.NewRequestReceived">
+ <summary>
+ Occurs when [request comming].
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IRawDataProcessor`1">
+ <summary>
+ The raw data processor
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ </member>
+ <member name="E:SuperSocket.SocketBase.IRawDataProcessor`1.RawDataReceived">
+ <summary>
+ Gets or sets the raw binary data received event handler.
+ TAppSession: session
+ byte[]: receive buffer
+ int: receive buffer offset
+ int: receive lenght
+ bool: whether process the received data further
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IRequestHandler`1">
+ <summary>
+ The interface for handler of session request
+ </summary>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IRequestHandler`1.ExecuteCommand(SuperSocket.SocketBase.IAppSession,`0)">
+ <summary>
+ Executes the command.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="requestInfo">The request info.</param>
+ </member>
+ <member name="T:SuperSocket.SocketBase.ISocketServerAccessor">
+ <summary>
+ SocketServer Accessor interface
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ISocketServerAccessor.SocketServer">
+ <summary>
+ Gets the socket server.
+ </summary>
+ <value>
+ The socket server.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IRemoteCertificateValidator">
+ <summary>
+ The basic interface for RemoteCertificateValidator
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IRemoteCertificateValidator.Validate(SuperSocket.SocketBase.IAppSession,System.Object,System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Cryptography.X509Certificates.X509Chain,System.Net.Security.SslPolicyErrors)">
+ <summary>
+ Validates the remote certificate
+ </summary>
+ <param name="session">The session.</param>
+ <param name="sender">The sender.</param>
+ <param name="certificate">The certificate.</param>
+ <param name="chain">The chain.</param>
+ <param name="sslPolicyErrors">The SSL policy errors.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IActiveConnector">
+ <summary>
+ The inerface to connect the remote endpoint actively
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IActiveConnector.ActiveConnect(System.Net.EndPoint)">
+ <summary>
+ Connect the target endpoint actively.
+ </summary>
+ <param name="targetEndPoint">The target end point.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IActiveConnector.ActiveConnect(System.Net.EndPoint,System.Net.EndPoint)">
+ <summary>
+ Connect the target endpoint actively.
+ </summary>
+ <param name="targetEndPoint">The target end point.</param>
+ <param name="localEndPoint">The local end point.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.RegisterConfigHandler``1(SuperSocket.SocketBase.Config.IServerConfig,System.String,System.Func{``0,System.Boolean})">
+ <summary>
+ Registers the configuration option value handler, it is used for reading configuration value and reload it after the configuration is changed;
+ </summary>
+ <typeparam name="TConfigOption">The type of the configuration option.</typeparam>
+ <param name="config">The server configuration.</param>
+ <param name="name">The changed config option's name.</param>
+ <param name="handler">The handler.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.RegisterConfigHandler(SuperSocket.SocketBase.Config.IServerConfig,System.String,System.Func{System.String,System.Boolean})">
+ <summary>
+ Registers the configuration option value handler, it is used for reading configuration value and reload it after the configuration is changed;
+ </summary>
+ <param name="config">The server configuration.</param>
+ <param name="name">The changed config option name.</param>
+ <param name="handler">The handler.</param>
+ </member>
+ <member name="F:SuperSocket.SocketBase.AppServerBase`2.NullAppSession">
+ <summary>
+ Null appSession instance
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.AppServerBase`2.m_StateCode">
+ <summary>
+ the current state's code
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.AppServerBase`2"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.#ctor(SuperSocket.SocketBase.Protocol.IReceiveFilterFactory{`1})">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.AppServerBase`2"/> class.
+ </summary>
+ <param name="receiveFilterFactory">The Receive filter factory.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.GetCommandFilterAttributes(System.Type)">
+ <summary>
+ Gets the filter attributes.
+ </summary>
+ <param name="type">The type.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.SetupCommands(System.Collections.Generic.Dictionary{System.String,SuperSocket.SocketBase.Command.ICommand{`0,`1}})">
+ <summary>
+ Setups the command into command dictionary
+ </summary>
+ <param name="discoveredCommands">The discovered commands.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.Setup(SuperSocket.SocketBase.Config.IRootConfig,SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Setups the specified root config.
+ </summary>
+ <param name="rootConfig">The root config.</param>
+ <param name="config">The config.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.Setup(System.Int32)">
+ <summary>
+ Setups with the specified port.
+ </summary>
+ <param name="port">The port.</param>
+ <returns>return setup result</returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.Setup(SuperSocket.SocketBase.Config.IServerConfig,SuperSocket.SocketBase.ISocketServerFactory,SuperSocket.SocketBase.Protocol.IReceiveFilterFactory{`1},SuperSocket.SocketBase.Logging.ILogFactory,System.Collections.Generic.IEnumerable{SuperSocket.SocketBase.IConnectionFilter},System.Collections.Generic.IEnumerable{SuperSocket.SocketBase.Command.ICommandLoader{SuperSocket.SocketBase.Command.ICommand{`0,`1}}})">
+ <summary>
+ Setups with the specified config.
+ </summary>
+ <param name="config">The server config.</param>
+ <param name="socketServerFactory">The socket server factory.</param>
+ <param name="receiveFilterFactory">The receive filter factory.</param>
+ <param name="logFactory">The log factory.</param>
+ <param name="connectionFilters">The connection filters.</param>
+ <param name="commandLoaders">The command loaders.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.Setup(SuperSocket.SocketBase.Config.IRootConfig,SuperSocket.SocketBase.Config.IServerConfig,SuperSocket.SocketBase.ISocketServerFactory,SuperSocket.SocketBase.Protocol.IReceiveFilterFactory{`1},SuperSocket.SocketBase.Logging.ILogFactory,System.Collections.Generic.IEnumerable{SuperSocket.SocketBase.IConnectionFilter},System.Collections.Generic.IEnumerable{SuperSocket.SocketBase.Command.ICommandLoader{SuperSocket.SocketBase.Command.ICommand{`0,`1}}})">
+ <summary>
+ Setups the specified root config, this method used for programming setup
+ </summary>
+ <param name="rootConfig">The root config.</param>
+ <param name="config">The server config.</param>
+ <param name="socketServerFactory">The socket server factory.</param>
+ <param name="receiveFilterFactory">The Receive filter factory.</param>
+ <param name="logFactory">The log factory.</param>
+ <param name="connectionFilters">The connection filters.</param>
+ <param name="commandLoaders">The command loaders.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.Setup(System.String,System.Int32,SuperSocket.SocketBase.ISocketServerFactory,SuperSocket.SocketBase.Protocol.IReceiveFilterFactory{`1},SuperSocket.SocketBase.Logging.ILogFactory,System.Collections.Generic.IEnumerable{SuperSocket.SocketBase.IConnectionFilter},System.Collections.Generic.IEnumerable{SuperSocket.SocketBase.Command.ICommandLoader{SuperSocket.SocketBase.Command.ICommand{`0,`1}}})">
+ <summary>
+ Setups with the specified ip and port.
+ </summary>
+ <param name="ip">The ip.</param>
+ <param name="port">The port.</param>
+ <param name="socketServerFactory">The socket server factory.</param>
+ <param name="receiveFilterFactory">The Receive filter factory.</param>
+ <param name="logFactory">The log factory.</param>
+ <param name="connectionFilters">The connection filters.</param>
+ <param name="commandLoaders">The command loaders.</param>
+ <returns>return setup result</returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.SuperSocket#SocketBase#IWorkItem#Setup(SuperSocket.SocketBase.IBootstrap,SuperSocket.SocketBase.Config.IServerConfig,SuperSocket.SocketBase.Provider.ProviderFactoryInfo[])">
+ <summary>
+ Setups the specified root config.
+ </summary>
+ <param name="bootstrap">The bootstrap.</param>
+ <param name="config">The socket server instance config.</param>
+ <param name="factories">The factories.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.SetupCommandLoaders(System.Collections.Generic.List{SuperSocket.SocketBase.Command.ICommandLoader{SuperSocket.SocketBase.Command.ICommand{`0,`1}}})">
+ <summary>
+ Setups the command loaders.
+ </summary>
+ <param name="commandLoaders">The command loaders.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.CreateLogger(System.String)">
+ <summary>
+ Creates the logger for the AppServer.
+ </summary>
+ <param name="loggerName">Name of the logger.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.SetupSecurity(SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Setups the security option of socket communications.
+ </summary>
+ <param name="config">The config of the server instance.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.GetCertificate(SuperSocket.SocketBase.Config.ICertificateConfig)">
+ <summary>
+ Gets the certificate from server configuguration.
+ </summary>
+ <param name="certificate">The certificate config.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.ValidateClientCertificate(`0,System.Object,System.Security.Cryptography.X509Certificates.X509Certificate,System.Security.Cryptography.X509Certificates.X509Chain,System.Net.Security.SslPolicyErrors)">
+ <summary>
+ Validates the client certificate. This method is only used if the certificate configuration attribute "clientCertificateRequired" is true.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="sender">The sender.</param>
+ <param name="certificate">The certificate.</param>
+ <param name="chain">The chain.</param>
+ <param name="sslPolicyErrors">The SSL policy errors.</param>
+ <returns>return the validation result</returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.SetupSocketServer">
+ <summary>
+ Setups the socket server.instance
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.SetupListeners(SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Setups the listeners base on server configuration
+ </summary>
+ <param name="config">The config.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.Start">
+ <summary>
+ Starts this server instance.
+ </summary>
+ <returns>
+ return true if start successfull, else false
+ </returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.OnStartup">
+ <summary>
+ Called when [startup].
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.OnStarted">
+ <summary>
+ Called when [started].
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.OnStopped">
+ <summary>
+ Called when [stopped].
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.Stop">
+ <summary>
+ Stops this server instance.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.GetCommandByName(System.String)">
+ <summary>
+ Gets command by command name.
+ </summary>
+ <param name="commandName">Name of the command.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.OnRawDataReceived(SuperSocket.SocketBase.IAppSession,System.Byte[],System.Int32,System.Int32)">
+ <summary>
+ Called when [raw data received].
+ </summary>
+ <param name="session">The session.</param>
+ <param name="buffer">The buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.ExecuteCommand(`0,`1)">
+ <summary>
+ Executes the command.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="requestInfo">The request info.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.ExecuteCommand(SuperSocket.SocketBase.IAppSession,`1)">
+ <summary>
+ Executes the command for the session.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="requestInfo">The request info.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.SuperSocket#SocketBase#IRequestHandler{TRequestInfo}#ExecuteCommand(SuperSocket.SocketBase.IAppSession,`1)">
+ <summary>
+ Executes the command.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="requestInfo">The request info.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.ExecuteConnectionFilters(System.Net.IPEndPoint)">
+ <summary>
+ Executes the connection filters.
+ </summary>
+ <param name="remoteAddress">The remote address.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.SuperSocket#SocketBase#IAppServer#CreateAppSession(SuperSocket.SocketBase.ISocketSession)">
+ <summary>
+ Creates the app session.
+ </summary>
+ <param name="socketSession">The socket session.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.CreateAppSession(SuperSocket.SocketBase.ISocketSession)">
+ <summary>
+ create a new TAppSession instance, you can override it to create the session instance in your own way
+ </summary>
+ <param name="socketSession">the socket session.</param>
+ <returns>the new created session instance</returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.SuperSocket#SocketBase#IAppServer#RegisterSession(SuperSocket.SocketBase.IAppSession)">
+ <summary>
+ Registers the new created app session into the appserver's session container.
+ </summary>
+ <param name="session">The session.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.RegisterSession(System.String,`0)">
+ <summary>
+ Registers the session into session container.
+ </summary>
+ <param name="sessionID">The session ID.</param>
+ <param name="appSession">The app session.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.OnNewSessionConnected(`0)">
+ <summary>
+ Called when [new session connected].
+ </summary>
+ <param name="session">The session.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.ResetSessionSecurity(SuperSocket.SocketBase.IAppSession,System.Security.Authentication.SslProtocols)">
+ <summary>
+ Resets the session's security protocol.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="security">The security protocol.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.OnSocketSessionClosed(SuperSocket.SocketBase.ISocketSession,SuperSocket.SocketBase.CloseReason)">
+ <summary>
+ Called when [socket session closed].
+ </summary>
+ <param name="session">The socket session.</param>
+ <param name="reason">The reason.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.OnSessionClosed(`0,SuperSocket.SocketBase.CloseReason)">
+ <summary>
+ Called when [session closed].
+ </summary>
+ <param name="session">The appSession.</param>
+ <param name="reason">The reason.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.GetSessionByID(System.String)">
+ <summary>
+ Gets the app session by ID.
+ </summary>
+ <param name="sessionID">The session ID.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.SuperSocket#SocketBase#IAppServer#GetSessionByID(System.String)">
+ <summary>
+ Gets the app session by ID.
+ </summary>
+ <param name="sessionID"></param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.GetSessions(System.Func{`0,System.Boolean})">
+ <summary>
+ Gets the matched sessions from sessions snapshot.
+ </summary>
+ <param name="critera">The prediction critera.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.GetAllSessions">
+ <summary>
+ Gets all sessions in sessions snapshot.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.GetFilePath(System.String)">
+ <summary>
+ Gets the physical file path by the relative file path,
+ search both in the appserver's root and in the supersocket root dir if the isolation level has been set other than 'None'.
+ </summary>
+ <param name="relativeFilePath">The relative file path.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.SuperSocket#SocketBase#IActiveConnector#ActiveConnect(System.Net.EndPoint,System.Net.EndPoint)">
+ <summary>
+ Connect the remote endpoint actively.
+ </summary>
+ <param name="targetEndPoint">The target end point.</param>
+ <param name="localEndPoint">The local end point.</param>
+ <returns></returns>
+ <exception cref="T:System.Exception">This server cannot support active connect.</exception>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.SuperSocket#SocketBase#IActiveConnector#ActiveConnect(System.Net.EndPoint)">
+ <summary>
+ Connect the remote endpoint actively.
+ </summary>
+ <param name="targetEndPoint">The target end point.</param>
+ <returns></returns>
+ <exception cref="T:System.Exception">This server cannot support active connect.</exception>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.SuperSocket#SocketBase#ISystemEndPoint#TransferSystemMessage(System.String,System.Object)">
+ <summary>
+ Transfers the system message
+ </summary>
+ <param name="messageType">Type of the message.</param>
+ <param name="messageData">The message data.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.OnSystemMessageReceived(System.String,System.Object)">
+ <summary>
+ Called when [system message received].
+ </summary>
+ <param name="messageType">Type of the message.</param>
+ <param name="messageData">The message data.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.UpdateServerStatus(SuperSocket.SocketBase.StatusInfoCollection)">
+ <summary>
+ Updates the summary of the server.
+ </summary>
+ <param name="serverStatus">The server status.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.OnServerStatusCollected(SuperSocket.SocketBase.StatusInfoCollection,SuperSocket.SocketBase.StatusInfoCollection)">
+ <summary>
+ Called when [server status collected].
+ </summary>
+ <param name="bootstrapStatus">The bootstrapStatus status.</param>
+ <param name="serverStatus">The server status.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServerBase`2.Dispose">
+ <summary>
+ Releases unmanaged and - optionally - managed resources
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.Config">
+ <summary>
+ Gets the server's config.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.State">
+ <summary>
+ Gets the current state of the work item.
+ </summary>
+ <value>
+ The state.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.Certificate">
+ <summary>
+ Gets the certificate of current server.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.ReceiveFilterFactory">
+ <summary>
+ Gets or sets the receive filter factory.
+ </summary>
+ <value>
+ The receive filter factory.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.SuperSocket#SocketBase#IAppServer#ReceiveFilterFactory">
+ <summary>
+ Gets the Receive filter factory.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.BasicSecurity">
+ <summary>
+ Gets the basic transfer layer security protocol.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.RootConfig">
+ <summary>
+ Gets the root config.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.Logger">
+ <summary>
+ Gets the logger assosiated with this object.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.Bootstrap">
+ <summary>
+ Gets the bootstrap of this appServer instance.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.TotalHandledRequests">
+ <summary>
+ Gets the total handled requests number.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.Listeners">
+ <summary>
+ Gets or sets the listeners inforamtion.
+ </summary>
+ <value>
+ The listeners.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.StartedTime">
+ <summary>
+ Gets the started time of this server instance.
+ </summary>
+ <value>
+ The started time.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.LogFactory">
+ <summary>
+ Gets or sets the log factory.
+ </summary>
+ <value>
+ The log factory.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.TextEncoding">
+ <summary>
+ Gets the default text encoding.
+ </summary>
+ <value>
+ The text encoding.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.Name">
+ <summary>
+ Gets the name of the server instance.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.SuperSocket#SocketBase#ISocketServerAccessor#SocketServer">
+ <summary>
+ Gets the socket server.
+ </summary>
+ <value>
+ The socket server.
+ </value>
+ </member>
+ <member name="E:SuperSocket.SocketBase.AppServerBase`2.SuperSocket#SocketBase#IRawDataProcessor{TAppSession}#RawDataReceived">
+ <summary>
+ Gets or sets the raw binary data received event handler.
+ TAppSession: session
+ byte[]: receive buffer
+ int: receive buffer offset
+ int: receive lenght
+ bool: whether process the received data further
+ </summary>
+ </member>
+ <member name="E:SuperSocket.SocketBase.AppServerBase`2.NewRequestReceived">
+ <summary>
+ Occurs when a full request item received.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.ConnectionFilters">
+ <summary>
+ Gets or sets the server's connection filter
+ </summary>
+ <value>
+ The server's connection filters
+ </value>
+ </member>
+ <member name="E:SuperSocket.SocketBase.AppServerBase`2.NewSessionConnected">
+ <summary>
+ The action which will be executed after a new session connect
+ </summary>
+ </member>
+ <member name="E:SuperSocket.SocketBase.AppServerBase`2.SessionClosed">
+ <summary>
+ Gets/sets the session closed event handler.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServerBase`2.SessionCount">
+ <summary>
+ Gets the total session count.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Async">
+ <summary>
+ Async extension class
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Async.AsyncRun(SuperSocket.SocketBase.ILoggerProvider,System.Action)">
+ <summary>
+ Runs the specified task.
+ </summary>
+ <param name="logProvider">The log provider.</param>
+ <param name="task">The task.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Async.AsyncRun(SuperSocket.SocketBase.ILoggerProvider,System.Action,System.Threading.Tasks.TaskCreationOptions)">
+ <summary>
+ Runs the specified task.
+ </summary>
+ <param name="logProvider">The log provider.</param>
+ <param name="task">The task.</param>
+ <param name="taskOption">The task option.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Async.AsyncRun(SuperSocket.SocketBase.ILoggerProvider,System.Action,System.Action{System.Exception})">
+ <summary>
+ Runs the specified task.
+ </summary>
+ <param name="logProvider">The log provider.</param>
+ <param name="task">The task.</param>
+ <param name="exceptionHandler">The exception handler.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Async.AsyncRun(SuperSocket.SocketBase.ILoggerProvider,System.Action,System.Threading.Tasks.TaskCreationOptions,System.Action{System.Exception})">
+ <summary>
+ Runs the specified task.
+ </summary>
+ <param name="logProvider">The log provider.</param>
+ <param name="task">The task.</param>
+ <param name="taskOption">The task option.</param>
+ <param name="exceptionHandler">The exception handler.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Async.AsyncRun(SuperSocket.SocketBase.ILoggerProvider,System.Action{System.Object},System.Object)">
+ <summary>
+ Runs the specified task.
+ </summary>
+ <param name="logProvider">The log provider.</param>
+ <param name="task">The task.</param>
+ <param name="state">The state.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Async.AsyncRun(SuperSocket.SocketBase.ILoggerProvider,System.Action{System.Object},System.Object,System.Threading.Tasks.TaskCreationOptions)">
+ <summary>
+ Runs the specified task.
+ </summary>
+ <param name="logProvider">The log provider.</param>
+ <param name="task">The task.</param>
+ <param name="state">The state.</param>
+ <param name="taskOption">The task option.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Async.AsyncRun(SuperSocket.SocketBase.ILoggerProvider,System.Action{System.Object},System.Object,System.Action{System.Exception})">
+ <summary>
+ Runs the specified task.
+ </summary>
+ <param name="logProvider">The log provider.</param>
+ <param name="task">The task.</param>
+ <param name="state">The state.</param>
+ <param name="exceptionHandler">The exception handler.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Async.AsyncRun(SuperSocket.SocketBase.ILoggerProvider,System.Action{System.Object},System.Object,System.Threading.Tasks.TaskCreationOptions,System.Action{System.Exception})">
+ <summary>
+ Runs the specified task.
+ </summary>
+ <param name="logProvider">The log provider.</param>
+ <param name="task">The task.</param>
+ <param name="state">The state.</param>
+ <param name="taskOption">The task option.</param>
+ <param name="exceptionHandler">The exception handler.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.SocketBase.CommandExecutingContext">
+ <summary>
+ Command Executing Context
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.CommandExecutingContext.Initialize(SuperSocket.SocketBase.IAppSession,SuperSocket.SocketBase.Protocol.IRequestInfo,SuperSocket.SocketBase.Command.ICommand)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.CommandExecutingContext"/> class.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="requestInfo">The request info.</param>
+ <param name="command">The command.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.CommandExecutingContext.Session">
+ <summary>
+ Gets the session.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.CommandExecutingContext.RequestInfo">
+ <summary>
+ Gets the request info.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.CommandExecutingContext.CurrentCommand">
+ <summary>
+ Gets the current command.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.CommandExecutingContext.Exception">
+ <summary>
+ Gets the exception.
+ </summary>
+ <value>
+ The exception.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.CommandExecutingContext.ExceptionHandled">
+ <summary>
+ Gets a value indicating whether [exception handled].
+ </summary>
+ <value>
+ <c>true</c> if [exception handled]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.CommandExecutingContext.Cancel">
+ <summary>
+ Gets or sets a value indicating whether this command executing is cancelled.
+ </summary>
+ <value>
+ <c>true</c> if cancel; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.CommandLoaderBase`1">
+ <summary>
+ CommandLoader base class
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.ICommandLoader`1">
+ <summary>
+ Command loader's interface
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.ICommandLoader">
+ <summary>
+ the empty basic interface for command loader
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.ICommandLoader`1.Initialize(SuperSocket.SocketBase.Config.IRootConfig,SuperSocket.SocketBase.IAppServer)">
+ <summary>
+ Initializes the command loader by the root config and the server instance.
+ </summary>
+ <param name="rootConfig">The root config.</param>
+ <param name="appServer">The app server.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.ICommandLoader`1.TryLoadCommands(System.Collections.Generic.IEnumerable{`0}@)">
+ <summary>
+ Tries to load commands.
+ </summary>
+ <param name="commands">The commands.</param>
+ <returns></returns>
+ </member>
+ <member name="E:SuperSocket.SocketBase.Command.ICommandLoader`1.Updated">
+ <summary>
+ Occurs when [updated].
+ </summary>
+ </member>
+ <member name="E:SuperSocket.SocketBase.Command.ICommandLoader`1.Error">
+ <summary>
+ Occurs when [error].
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.CommandLoaderBase`1.Initialize(SuperSocket.SocketBase.Config.IRootConfig,SuperSocket.SocketBase.IAppServer)">
+ <summary>
+ Initializes the command loader by the root config and appserver instance.
+ </summary>
+ <param name="rootConfig">The root config.</param>
+ <param name="appServer">The app server.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.CommandLoaderBase`1.TryLoadCommands(System.Collections.Generic.IEnumerable{`0}@)">
+ <summary>
+ Tries to load commands.
+ </summary>
+ <param name="commands">The commands.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.CommandLoaderBase`1.OnUpdated(System.Collections.Generic.IEnumerable{SuperSocket.SocketBase.Command.CommandUpdateInfo{`0}})">
+ <summary>
+ Called when [updated].
+ </summary>
+ <param name="commands">The commands.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.CommandLoaderBase`1.OnError(System.String)">
+ <summary>
+ Called when [error].
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.CommandLoaderBase`1.OnError(System.Exception)">
+ <summary>
+ Called when [error].
+ </summary>
+ <param name="e">The e.</param>
+ </member>
+ <member name="E:SuperSocket.SocketBase.Command.CommandLoaderBase`1.Updated">
+ <summary>
+ Occurs when [updated].
+ </summary>
+ </member>
+ <member name="E:SuperSocket.SocketBase.Command.CommandLoaderBase`1.Error">
+ <summary>
+ Occurs when [error].
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.CommandUpdateEventArgs`1">
+ <summary>
+ CommandUpdateEventArgs
+ </summary>
+ <typeparam name="T"></typeparam>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.CommandUpdateEventArgs`1.#ctor(System.Collections.Generic.IEnumerable{SuperSocket.SocketBase.Command.CommandUpdateInfo{`0}})">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Command.CommandUpdateEventArgs`1"/> class.
+ </summary>
+ <param name="commands">The commands.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Command.CommandUpdateEventArgs`1.Commands">
+ <summary>
+ Gets the commands updated.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.ICommandFilterProvider">
+ <summary>
+ The basic interface for CommandFilter
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.ICommandFilterProvider.GetFilters">
+ <summary>
+ Gets the filters which assosiated with this command object.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.CommandAssemblyConfig">
+ <summary>
+ Command assembly config
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.ICommandAssemblyConfig">
+ <summary>
+ The basic interface for command assembly config
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ICommandAssemblyConfig.Assembly">
+ <summary>
+ Gets the assembly name.
+ </summary>
+ <value>
+ The assembly.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.CommandAssemblyConfig.Assembly">
+ <summary>
+ Gets or sets the assembly name.
+ </summary>
+ <value>
+ The assembly.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.IConfigurationSource">
+ <summary>
+ Configuration source interface
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.IRootConfig">
+ <summary>
+ IRootConfig, the part compatible with .Net 4.5 or higher
+ </summary>
+ <summary>
+ The root configuration interface
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.IRootConfig.GetChildConfig``1(System.String)">
+ <summary>
+ Gets the child config.
+ </summary>
+ <typeparam name="TConfig">The type of the config.</typeparam>
+ <param name="childConfigName">Name of the child config.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IRootConfig.DefaultCulture">
+ <summary>
+ Gets the default culture for all server instances.
+ </summary>
+ <value>
+ The default culture.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IRootConfig.MaxWorkingThreads">
+ <summary>
+ Gets the max working threads.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IRootConfig.MinWorkingThreads">
+ <summary>
+ Gets the min working threads.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IRootConfig.MaxCompletionPortThreads">
+ <summary>
+ Gets the max completion port threads.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IRootConfig.MinCompletionPortThreads">
+ <summary>
+ Gets the min completion port threads.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IRootConfig.DisablePerformanceDataCollector">
+ <summary>
+ Gets a value indicating whether [disable performance data collector].
+ </summary>
+ <value>
+ <c>true</c> if [disable performance data collector]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IRootConfig.PerformanceDataCollectInterval">
+ <summary>
+ Gets the performance data collect interval, in seconds.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IRootConfig.LogFactory">
+ <summary>
+ Gets the log factory name.
+ </summary>
+ <value>
+ The log factory.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IRootConfig.Isolation">
+ <summary>
+ Gets the isolation mode.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IRootConfig.OptionElements">
+ <summary>
+ Gets the option elements.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IConfigurationSource.Servers">
+ <summary>
+ Gets the servers definitions.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IConfigurationSource.ServerTypes">
+ <summary>
+ Gets the appServer types definition.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IConfigurationSource.ConnectionFilters">
+ <summary>
+ Gets the connection filters definition.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IConfigurationSource.LogFactories">
+ <summary>
+ Gets the log factories definition.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IConfigurationSource.ReceiveFilterFactories">
+ <summary>
+ Gets the Receive filter factories definition.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IConfigurationSource.CommandLoaders">
+ <summary>
+ Gets the command loaders definition.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.IServerConfig">
+ <summary>
+ IServerConfig, the part compatible with .Net 4.5 or higher
+ </summary>
+ <summary>
+ Server instance configuation interface
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.IServerConfig.GetChildConfig``1(System.String)">
+ <summary>
+ Gets the child config.
+ </summary>
+ <typeparam name="TConfig">The type of the config.</typeparam>
+ <param name="childConfigName">Name of the child config.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.DefaultCulture">
+ <summary>
+ Gets the default culture for this server.
+ </summary>
+ <value>
+ The default culture.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.ServerTypeName">
+ <summary>
+ Gets the name of the server type this appServer want to use.
+ </summary>
+ <value>
+ The name of the server type.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.ServerType">
+ <summary>
+ Gets the type definition of the appserver.
+ </summary>
+ <value>
+ The type of the server.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.ReceiveFilterFactory">
+ <summary>
+ Gets the Receive filter factory.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.Ip">
+ <summary>
+ Gets the ip.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.Port">
+ <summary>
+ Gets the port.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.Options">
+ <summary>
+ Gets the options.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.OptionElements">
+ <summary>
+ Gets the option elements.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.Disabled">
+ <summary>
+ Gets a value indicating whether this <see cref="T:SuperSocket.SocketBase.Config.IServerConfig"/> is disabled.
+ </summary>
+ <value>
+ <c>true</c> if disabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.Name">
+ <summary>
+ Gets the name.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.Mode">
+ <summary>
+ Gets the mode.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.SendTimeOut">
+ <summary>
+ Gets the send time out.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.MaxConnectionNumber">
+ <summary>
+ Gets the max connection number.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.ReceiveBufferSize">
+ <summary>
+ Gets the size of the receive buffer.
+ </summary>
+ <value>
+ The size of the receive buffer.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.SendBufferSize">
+ <summary>
+ Gets the size of the send buffer.
+ </summary>
+ <value>
+ The size of the send buffer.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.SyncSend">
+ <summary>
+ Gets a value indicating whether sending is in synchronous mode.
+ </summary>
+ <value>
+ <c>true</c> if [sync send]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.LogCommand">
+ <summary>
+ Gets a value indicating whether log command in log file.
+ </summary>
+ <value><c>true</c> if log command; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.ClearIdleSession">
+ <summary>
+ Gets a value indicating whether clear idle session.
+ </summary>
+ <value><c>true</c> if clear idle session; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.ClearIdleSessionInterval">
+ <summary>
+ Gets the clear idle session interval, in seconds.
+ </summary>
+ <value>The clear idle session interval.</value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.IdleSessionTimeOut">
+ <summary>
+ Gets the idle session timeout time length, in seconds.
+ </summary>
+ <value>The idle session time out.</value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.Certificate">
+ <summary>
+ Gets X509Certificate configuration.
+ </summary>
+ <value>X509Certificate configuration.</value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.Security">
+ <summary>
+ Gets the security protocol, X509 certificate.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.MaxRequestLength">
+ <summary>
+ Gets the length of the max request.
+ </summary>
+ <value>
+ The length of the max request.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.DisableSessionSnapshot">
+ <summary>
+ Gets a value indicating whether [disable session snapshot].
+ </summary>
+ <value>
+ <c>true</c> if [disable session snapshot]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.SessionSnapshotInterval">
+ <summary>
+ Gets the interval to taking snapshot for all live sessions.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.ConnectionFilter">
+ <summary>
+ Gets the connection filters used by this server instance.
+ </summary>
+ <value>
+ The connection filter's name list, seperated by comma
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.CommandLoader">
+ <summary>
+ Gets the command loader, multiple values should be separated by comma.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.KeepAliveTime">
+ <summary>
+ Gets the start keep alive time, in seconds
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.KeepAliveInterval">
+ <summary>
+ Gets the keep alive interval, in seconds.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.ListenBacklog">
+ <summary>
+ Gets the backlog size of socket listening.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.StartupOrder">
+ <summary>
+ Gets the startup order of the server instance.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.Listeners">
+ <summary>
+ Gets the listeners' configuration.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.LogFactory">
+ <summary>
+ Gets the log factory name.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.SendingQueueSize">
+ <summary>
+ Gets the size of the sending queue.
+ </summary>
+ <value>
+ The size of the sending queue.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.LogBasicSessionActivity">
+ <summary>
+ Gets a value indicating whether [log basic session activity like connected and disconnected].
+ </summary>
+ <value>
+ <c>true</c> if [log basic session activity]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.LogAllSocketException">
+ <summary>
+ Gets a value indicating whether [log all socket exception].
+ </summary>
+ <value>
+ <c>true</c> if [log all socket exception]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.TextEncoding">
+ <summary>
+ Gets the default text encoding.
+ </summary>
+ <value>
+ The text encoding.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IServerConfig.CommandAssemblies">
+ <summary>
+ Gets the command assemblies configuration.
+ </summary>
+ <value>
+ The command assemblies.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.ITypeProvider">
+ <summary>
+ TypeProvider's interface
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ITypeProvider.Name">
+ <summary>
+ Gets the name.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ITypeProvider.Type">
+ <summary>
+ Gets the type.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.ConfigurationSource">
+ <summary>
+ Poco configuration source
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.RootConfig">
+ <summary>
+ Root configuration model
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.RootConfig.#ctor(SuperSocket.SocketBase.Config.IRootConfig)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Config.RootConfig"/> class.
+ </summary>
+ <param name="rootConfig">The root config.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.RootConfig.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Config.RootConfig"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.RootConfig.GetChildConfig``1(System.String)">
+ <summary>
+ Gets the child config.
+ </summary>
+ <typeparam name="TConfig">The type of the config.</typeparam>
+ <param name="childConfigName">Name of the child config.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.RootConfig.DefaultCulture">
+ <summary>
+ Gets or sets the default culture.
+ </summary>
+ <value>
+ The default culture.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.RootConfig.MaxWorkingThreads">
+ <summary>
+ Gets/Sets the max working threads.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.RootConfig.MinWorkingThreads">
+ <summary>
+ Gets/sets the min working threads.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.RootConfig.MaxCompletionPortThreads">
+ <summary>
+ Gets/sets the max completion port threads.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.RootConfig.MinCompletionPortThreads">
+ <summary>
+ Gets/sets the min completion port threads.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.RootConfig.PerformanceDataCollectInterval">
+ <summary>
+ Gets/sets the performance data collect interval, in seconds.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.RootConfig.DisablePerformanceDataCollector">
+ <summary>
+ Gets/sets a value indicating whether [disable performance data collector].
+ </summary>
+ <value>
+ <c>true</c> if [disable performance data collector]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.RootConfig.Isolation">
+ <summary>
+ Gets/sets the isolation mode.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.RootConfig.LogFactory">
+ <summary>
+ Gets/sets the log factory name.
+ </summary>
+ <value>
+ The log factory.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.RootConfig.OptionElements">
+ <summary>
+ Gets/sets the option elements.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.ConfigurationSource.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Config.ConfigurationSource"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.ConfigurationSource.#ctor(SuperSocket.SocketBase.Config.IConfigurationSource)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Config.ConfigurationSource"/> class.
+ </summary>
+ <param name="source">The source.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ConfigurationSource.Servers">
+ <summary>
+ Gets the servers definitions.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ConfigurationSource.ServerTypes">
+ <summary>
+ Gets/sets the server types definition.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ConfigurationSource.ConnectionFilters">
+ <summary>
+ Gets/sets the connection filters definition.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ConfigurationSource.LogFactories">
+ <summary>
+ Gets/sets the log factories definition.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ConfigurationSource.ReceiveFilterFactories">
+ <summary>
+ Gets/sets the Receive filter factories definition.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ConfigurationSource.CommandLoaders">
+ <summary>
+ Gets/sets the command loaders definition.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.ServerConfig">
+ <summary>
+ Server configruation model
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Config.ServerConfig.DefaultReceiveBufferSize">
+ <summary>
+ Default ReceiveBufferSize
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Config.ServerConfig.DefaultMaxConnectionNumber">
+ <summary>
+ Default MaxConnectionNumber
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Config.ServerConfig.DefaultSendingQueueSize">
+ <summary>
+ Default sending queue size
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Config.ServerConfig.DefaultMaxRequestLength">
+ <summary>
+ Default MaxRequestLength
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Config.ServerConfig.DefaultSendTimeout">
+ <summary>
+ Default send timeout value, in milliseconds
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Config.ServerConfig.DefaultClearIdleSessionInterval">
+ <summary>
+ Default clear idle session interval
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Config.ServerConfig.DefaultIdleSessionTimeOut">
+ <summary>
+ Default idle session timeout
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Config.ServerConfig.DefaultSendBufferSize">
+ <summary>
+ The default send buffer size
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Config.ServerConfig.DefaultSessionSnapshotInterval">
+ <summary>
+ The default session snapshot interval
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Config.ServerConfig.DefaultKeepAliveTime">
+ <summary>
+ The default keep alive time
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Config.ServerConfig.DefaultKeepAliveInterval">
+ <summary>
+ The default keep alive interval
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Config.ServerConfig.DefaultListenBacklog">
+ <summary>
+ The default listen backlog
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.ServerConfig.#ctor(SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Config.ServerConfig"/> class.
+ </summary>
+ <param name="serverConfig">The server config.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.ServerConfig.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Config.ServerConfig"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.ServerConfig.GetChildConfig``1(System.String)">
+ <summary>
+ Gets the child config.
+ </summary>
+ <typeparam name="TConfig">The type of the config.</typeparam>
+ <param name="childConfigName">Name of the child config.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.DefaultCulture">
+ <summary>
+ Gets or sets the default culture.
+ </summary>
+ <value>
+ The default culture.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.ServerTypeName">
+ <summary>
+ Gets/sets the name of the server type of this appServer want to use.
+ </summary>
+ <value>
+ The name of the server type.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.ServerType">
+ <summary>
+ Gets/sets the type definition of the appserver.
+ </summary>
+ <value>
+ The type of the server.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.ReceiveFilterFactory">
+ <summary>
+ Gets/sets the Receive filter factory.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.Ip">
+ <summary>
+ Gets/sets the ip.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.Port">
+ <summary>
+ Gets/sets the port.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.Options">
+ <summary>
+ Gets/sets the options.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.OptionElements">
+ <summary>
+ Gets the option elements.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.Disabled">
+ <summary>
+ Gets/sets a value indicating whether this <see cref="T:SuperSocket.SocketBase.Config.IServerConfig"/> is disabled.
+ </summary>
+ <value>
+ <c>true</c> if disabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.Name">
+ <summary>
+ Gets the name.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.Mode">
+ <summary>
+ Gets/sets the mode.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.SendTimeOut">
+ <summary>
+ Gets/sets the send time out.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.MaxConnectionNumber">
+ <summary>
+ Gets the max connection number.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.ReceiveBufferSize">
+ <summary>
+ Gets the size of the receive buffer.
+ </summary>
+ <value>
+ The size of the receive buffer.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.SendBufferSize">
+ <summary>
+ Gets the size of the send buffer.
+ </summary>
+ <value>
+ The size of the send buffer.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.SyncSend">
+ <summary>
+ Gets a value indicating whether sending is in synchronous mode.
+ </summary>
+ <value>
+ <c>true</c> if [sync send]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.LogCommand">
+ <summary>
+ Gets/sets a value indicating whether log command in log file.
+ </summary>
+ <value>
+ <c>true</c> if log command; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.ClearIdleSession">
+ <summary>
+ Gets/sets a value indicating whether clear idle session.
+ </summary>
+ <value>
+ <c>true</c> if clear idle session; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.ClearIdleSessionInterval">
+ <summary>
+ Gets/sets the clear idle session interval, in seconds.
+ </summary>
+ <value>
+ The clear idle session interval.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.IdleSessionTimeOut">
+ <summary>
+ Gets/sets the idle session timeout time length, in seconds.
+ </summary>
+ <value>
+ The idle session time out.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.Certificate">
+ <summary>
+ Gets/sets X509Certificate configuration.
+ </summary>
+ <value>
+ X509Certificate configuration.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.Security">
+ <summary>
+ Gets/sets the security protocol, X509 certificate.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.MaxRequestLength">
+ <summary>
+ Gets/sets the length of the max request.
+ </summary>
+ <value>
+ The length of the max request.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.DisableSessionSnapshot">
+ <summary>
+ Gets/sets a value indicating whether [disable session snapshot].
+ </summary>
+ <value>
+ <c>true</c> if [disable session snapshot]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.SessionSnapshotInterval">
+ <summary>
+ Gets/sets the interval to taking snapshot for all live sessions.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.ConnectionFilter">
+ <summary>
+ Gets/sets the connection filters used by this server instance.
+ </summary>
+ <value>
+ The connection filter's name list, seperated by comma
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.CommandLoader">
+ <summary>
+ Gets the command loader, multiple values should be separated by comma.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.KeepAliveTime">
+ <summary>
+ Gets/sets the start keep alive time, in seconds
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.KeepAliveInterval">
+ <summary>
+ Gets/sets the keep alive interval, in seconds.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.ListenBacklog">
+ <summary>
+ Gets the backlog size of socket listening.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.StartupOrder">
+ <summary>
+ Gets/sets the startup order of the server instance.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.Listeners">
+ <summary>
+ Gets and sets the listeners' configuration.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.LogFactory">
+ <summary>
+ Gets/sets the log factory name.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.SendingQueueSize">
+ <summary>
+ Gets/sets the size of the sending queue.
+ </summary>
+ <value>
+ The size of the sending queue.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.LogBasicSessionActivity">
+ <summary>
+ Gets a value indicating whether [log basic session activity like connected and disconnected].
+ </summary>
+ <value>
+ <c>true</c> if [log basic session activity]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.LogAllSocketException">
+ <summary>
+ Gets/sets a value indicating whether [log all socket exception].
+ </summary>
+ <value>
+ <c>true</c> if [log all socket exception]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.TextEncoding">
+ <summary>
+ Gets/sets the default text encoding.
+ </summary>
+ <value>
+ The text encoding.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ServerConfig.CommandAssemblies">
+ <summary>
+ Gets the command assemblies configuration.
+ </summary>
+ <value>
+ The command assemblies.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.HotUpdateAttribute">
+ <summary>
+ the attribute to mark which property of ServerConfig support hot update
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.TypeProvider">
+ <summary>
+ Type provider configuration
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.TypeProvider.Name">
+ <summary>
+ Gets the name.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.TypeProvider.Type">
+ <summary>
+ Gets the type.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.TypeProviderCollection">
+ <summary>
+ Type provider colletion configuration
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.TypeProviderCollection.CreateNewElement">
+ <summary>
+ When overridden in a derived class, creates a new <see cref="T:System.Configuration.ConfigurationElement"/>.
+ </summary>
+ <returns>
+ A new <see cref="T:System.Configuration.ConfigurationElement"/>.
+ </returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.TypeProviderCollection.GetElementKey(System.Configuration.ConfigurationElement)">
+ <summary>
+ Gets the element key for a specified configuration element when overridden in a derived class.
+ </summary>
+ <param name="element">The <see cref="T:System.Configuration.ConfigurationElement"/> to return the key for.</param>
+ <returns>
+ An <see cref="T:System.Object"/> that acts as the key for the specified <see cref="T:System.Configuration.ConfigurationElement"/>.
+ </returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.TypeProviderCollection.GetEnumerator">
+ <summary>
+ Returns an enumerator that iterates through the collection.
+ </summary>
+ <returns>
+ A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
+ </returns>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.TypeProviderConfig">
+ <summary>
+ TypeProviderConfig
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.TypeProviderConfig.Name">
+ <summary>
+ Gets the name.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.TypeProviderConfig.Type">
+ <summary>
+ Gets the type.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Extensions">
+ <summary>
+ Extensions class for SocketBase project
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Extensions.GetServerByName(SuperSocket.SocketBase.IBootstrap,System.String)">
+ <summary>
+ Gets the app server instance in the bootstrap by name, ignore case
+ </summary>
+ <param name="bootstrap">The bootstrap.</param>
+ <param name="name">The name of the appserver instance.</param>
+ <returns></returns>
+ <exception cref="T:System.ArgumentNullException"></exception>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Extensions.GetStatusInfoMetadata(System.Type)">
+ <summary>
+ Gets the status info metadata from the server type.
+ </summary>
+ <param name="serverType">Type of the server.</param>
+ <returns></returns>
+ <exception cref="T:System.ArgumentNullException"></exception>
+ </member>
+ <member name="T:SuperSocket.SocketBase.ActiveConnectResult">
+ <summary>
+ Active connect result model
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ActiveConnectResult.Result">
+ <summary>
+ Gets or sets a value indicating whether the conecting is sucessfull
+ </summary>
+ <value>
+ <c>true</c> if result; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ActiveConnectResult.Session">
+ <summary>
+ Gets or sets the connected session.
+ </summary>
+ <value>
+ The connected session.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.StartResult">
+ <summary>
+ The bootstrap start result
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.StartResult.None">
+ <summary>
+ No appserver has been set in the bootstrap, so nothing was started
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.StartResult.Success">
+ <summary>
+ All appserver instances were started successfully
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.StartResult.PartialSuccess">
+ <summary>
+ Some appserver instances were started successfully, but some of them failed
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.StartResult.Failed">
+ <summary>
+ All appserver instances failed to start
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IBootstrap">
+ <summary>
+ SuperSocket bootstrap
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IBootstrap.Initialize">
+ <summary>
+ Initializes the bootstrap with the configuration
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IBootstrap.Initialize(System.Collections.Generic.IDictionary{System.String,System.Net.IPEndPoint})">
+ <summary>
+ Initializes the bootstrap with a listen endpoint replacement dictionary
+ </summary>
+ <param name="listenEndPointReplacement">The listen end point replacement.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IBootstrap.Initialize(System.Func{SuperSocket.SocketBase.Config.IServerConfig,SuperSocket.SocketBase.Config.IServerConfig})">
+ <summary>
+ Initializes the bootstrap with the configuration
+ </summary>
+ <param name="serverConfigResolver">The server config resolver.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IBootstrap.Initialize(SuperSocket.SocketBase.Logging.ILogFactory)">
+ <summary>
+ Initializes the bootstrap with the configuration
+ </summary>
+ <param name="logFactory">The log factory.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IBootstrap.Initialize(System.Func{SuperSocket.SocketBase.Config.IServerConfig,SuperSocket.SocketBase.Config.IServerConfig},SuperSocket.SocketBase.Logging.ILogFactory)">
+ <summary>
+ Initializes the bootstrap with the configuration
+ </summary>
+ <param name="serverConfigResolver">The server config resolver.</param>
+ <param name="logFactory">The log factory.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IBootstrap.Start">
+ <summary>
+ Starts this bootstrap.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IBootstrap.Stop">
+ <summary>
+ Stops this bootstrap.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IBootstrap.AppServers">
+ <summary>
+ Gets all the app servers running in this bootstrap
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IBootstrap.Config">
+ <summary>
+ Gets the config.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IBootstrap.StartupConfigFile">
+ <summary>
+ Gets the startup config file.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IBootstrap.BaseDirectory">
+ <summary>
+ Gets the base directory.
+ </summary>
+ <value>
+ The base directory.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IDynamicBootstrap">
+ <summary>
+ The bootstrap interface to support add new server instance in runtime
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IDynamicBootstrap.Add(SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Adds a new server into the bootstrap.
+ </summary>
+ <param name="config">The new server's config.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IDynamicBootstrap.AddAndStart(SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Adds a new server into the bootstrap and then start it.
+ </summary>
+ <param name="config">The new server's config.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IDynamicBootstrap.Remove(System.String)">
+ <summary>
+ Removes the server instance which is specified by name.
+ </summary>
+ <param name="name">The name of the server instance to be removed.</param>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IsolationMode">
+ <summary>
+ AppServer instance running isolation mode
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.IsolationMode.None">
+ <summary>
+ No isolation
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.IsolationMode.AppDomain">
+ <summary>
+ Isolation by AppDomain
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.IsolationMode.Process">
+ <summary>
+ Isolation by process
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Logging.ConsoleLog">
+ <summary>
+ Console Log
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Logging.ILog">
+ <summary>
+ Log interface
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.Debug(System.Object)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.Debug(System.Object,System.Exception)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.DebugFormat(System.String,System.Object)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.DebugFormat(System.String,System.Object[])">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.DebugFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.DebugFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.DebugFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.Error(System.Object)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.Error(System.Object,System.Exception)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.ErrorFormat(System.String,System.Object)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.ErrorFormat(System.String,System.Object[])">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.ErrorFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.ErrorFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.Fatal(System.Object)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.Fatal(System.Object,System.Exception)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.FatalFormat(System.String,System.Object)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.FatalFormat(System.String,System.Object[])">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.FatalFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.FatalFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.FatalFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.Info(System.Object)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.Info(System.Object,System.Exception)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.InfoFormat(System.String,System.Object)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.InfoFormat(System.String,System.Object[])">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.InfoFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.InfoFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.InfoFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.Warn(System.Object)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.Warn(System.Object,System.Exception)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.WarnFormat(System.String,System.Object)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.WarnFormat(System.String,System.Object[])">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.WarnFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.WarnFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILog.WarnFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.ILog.IsDebugEnabled">
+ <summary>
+ Gets a value indicating whether this instance is debug enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is debug enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.ILog.IsErrorEnabled">
+ <summary>
+ Gets a value indicating whether this instance is error enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is error enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.ILog.IsFatalEnabled">
+ <summary>
+ Gets a value indicating whether this instance is fatal enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is fatal enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.ILog.IsInfoEnabled">
+ <summary>
+ Gets a value indicating whether this instance is info enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is info enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.ILog.IsWarnEnabled">
+ <summary>
+ Gets a value indicating whether this instance is warn enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is warn enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Logging.ConsoleLog"/> class.
+ </summary>
+ <param name="name">The name.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.Debug(System.Object)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.Debug(System.Object,System.Exception)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.DebugFormat(System.String,System.Object)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.DebugFormat(System.String,System.Object[])">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.DebugFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.DebugFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.DebugFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.Error(System.Object)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.Error(System.Object,System.Exception)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.ErrorFormat(System.String,System.Object)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.ErrorFormat(System.String,System.Object[])">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.ErrorFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.ErrorFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.Fatal(System.Object)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.Fatal(System.Object,System.Exception)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.FatalFormat(System.String,System.Object)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.FatalFormat(System.String,System.Object[])">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.FatalFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.FatalFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.FatalFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.Info(System.Object)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.Info(System.Object,System.Exception)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.InfoFormat(System.String,System.Object)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.InfoFormat(System.String,System.Object[])">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.InfoFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.InfoFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.InfoFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.Warn(System.Object)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.Warn(System.Object,System.Exception)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.WarnFormat(System.String,System.Object)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.WarnFormat(System.String,System.Object[])">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.WarnFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.WarnFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLog.WarnFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.ConsoleLog.IsDebugEnabled">
+ <summary>
+ Gets a value indicating whether this instance is debug enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is debug enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.ConsoleLog.IsErrorEnabled">
+ <summary>
+ Gets a value indicating whether this instance is error enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is error enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.ConsoleLog.IsFatalEnabled">
+ <summary>
+ Gets a value indicating whether this instance is fatal enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is fatal enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.ConsoleLog.IsInfoEnabled">
+ <summary>
+ Gets a value indicating whether this instance is info enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is info enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.ConsoleLog.IsWarnEnabled">
+ <summary>
+ Gets a value indicating whether this instance is warn enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is warn enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Logging.ConsoleLogFactory">
+ <summary>
+ Console log factory
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Logging.ILogFactory">
+ <summary>
+ LogFactory Interface
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ILogFactory.GetLog(System.String)">
+ <summary>
+ Gets the log by name.
+ </summary>
+ <param name="name">The name.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.ConsoleLogFactory.GetLog(System.String)">
+ <summary>
+ Gets the log by name.
+ </summary>
+ <param name="name">The name.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Logging.Log4NetLog">
+ <summary>
+ Log4NetLog
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.#ctor(log4net.ILog)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Logging.Log4NetLog"/> class.
+ </summary>
+ <param name="log">The log.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.Debug(System.Object)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.Debug(System.Object,System.Exception)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.DebugFormat(System.String,System.Object)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.DebugFormat(System.String,System.Object[])">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.DebugFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.DebugFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.DebugFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the debug message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.Error(System.Object)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.Error(System.Object,System.Exception)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.ErrorFormat(System.String,System.Object)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.ErrorFormat(System.String,System.Object[])">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.ErrorFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.ErrorFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.ErrorFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.Fatal(System.Object)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.Fatal(System.Object,System.Exception)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.FatalFormat(System.String,System.Object)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.FatalFormat(System.String,System.Object[])">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.FatalFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.FatalFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.FatalFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the fatal error message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.Info(System.Object)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.Info(System.Object,System.Exception)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.InfoFormat(System.String,System.Object)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.InfoFormat(System.String,System.Object[])">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.InfoFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.InfoFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.InfoFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the info message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.Warn(System.Object)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.Warn(System.Object,System.Exception)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.WarnFormat(System.String,System.Object)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.WarnFormat(System.String,System.Object[])">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.WarnFormat(System.IFormatProvider,System.String,System.Object[])">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="provider">The provider.</param>
+ <param name="format">The format.</param>
+ <param name="args">The args.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.WarnFormat(System.String,System.Object,System.Object)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLog.WarnFormat(System.String,System.Object,System.Object,System.Object)">
+ <summary>
+ Logs the warning message.
+ </summary>
+ <param name="format">The format.</param>
+ <param name="arg0">The arg0.</param>
+ <param name="arg1">The arg1.</param>
+ <param name="arg2">The arg2.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.Log4NetLog.IsDebugEnabled">
+ <summary>
+ Gets a value indicating whether this instance is debug enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is debug enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.Log4NetLog.IsErrorEnabled">
+ <summary>
+ Gets a value indicating whether this instance is error enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is error enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.Log4NetLog.IsFatalEnabled">
+ <summary>
+ Gets a value indicating whether this instance is fatal enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is fatal enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.Log4NetLog.IsInfoEnabled">
+ <summary>
+ Gets a value indicating whether this instance is info enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is info enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.Log4NetLog.IsWarnEnabled">
+ <summary>
+ Gets a value indicating whether this instance is warn enabled.
+ </summary>
+ <value>
+ <c>true</c> if this instance is warn enabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Logging.Log4NetLogFactory">
+ <summary>
+ Log4NetLogFactory
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Logging.LogFactoryBase">
+ <summary>
+ LogFactory Base class
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.LogFactoryBase.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Logging.LogFactoryBase"/> class.
+ </summary>
+ <param name="configFile">The config file.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.LogFactoryBase.GetLog(System.String)">
+ <summary>
+ Gets the log by name.
+ </summary>
+ <param name="name">The name.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.LogFactoryBase.ConfigFile">
+ <summary>
+ Gets the config file file path.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Logging.LogFactoryBase.IsSharedConfig">
+ <summary>
+ Gets a value indicating whether the server instance is running in isolation mode and the multiple server instances share the same logging configuration.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLogFactory.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Logging.Log4NetLogFactory"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLogFactory.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Logging.Log4NetLogFactory"/> class.
+ </summary>
+ <param name="log4netConfig">The log4net config.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Logging.Log4NetLogFactory.GetLog(System.String)">
+ <summary>
+ Gets the log by name.
+ </summary>
+ <param name="name">The name.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Metadata.AppServerMetadataTypeAttribute">
+ <summary>
+ StatusInfoMetadata type attribute
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Metadata.AppServerMetadataTypeAttribute.#ctor(System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Metadata.AppServerMetadataTypeAttribute"/> class.
+ </summary>
+ <param name="metadataType">Type of the metadata.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Metadata.AppServerMetadataTypeAttribute.MetadataType">
+ <summary>
+ Gets the type of the metadata.
+ </summary>
+ <value>
+ The type of the metadata.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Metadata.CommandFilterAttribute">
+ <summary>
+ Command filter attribute
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Metadata.CommandFilterAttribute.OnCommandExecuting(SuperSocket.SocketBase.CommandExecutingContext)">
+ <summary>
+ Called when [command executing].
+ </summary>
+ <param name="commandContext">The command context.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Metadata.CommandFilterAttribute.OnCommandExecuted(SuperSocket.SocketBase.CommandExecutingContext)">
+ <summary>
+ Called when [command executed].
+ </summary>
+ <param name="commandContext">The command context.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Metadata.CommandFilterAttribute.Order">
+ <summary>
+ Gets or sets the execution order.
+ </summary>
+ <value>
+ The order.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Metadata.DefaultAppServerMetadata">
+ <summary>
+ AppServer's default metadata type
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Metadata.StatusInfoAttribute">
+ <summary>
+ StatusInfo Metadata
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Metadata.StatusInfoAttribute.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Metadata.StatusInfoAttribute"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Metadata.StatusInfoAttribute.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Metadata.StatusInfoAttribute"/> class.
+ </summary>
+ <param name="key">The key.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Metadata.StatusInfoAttribute.Key">
+ <summary>
+ Gets or sets the key.
+ </summary>
+ <value>
+ The key.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Metadata.StatusInfoAttribute.Name">
+ <summary>
+ Gets or sets the name.
+ </summary>
+ <value>
+ The name.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Metadata.StatusInfoAttribute.ShortName">
+ <summary>
+ Gets or sets the short name.
+ </summary>
+ <value>
+ The short name.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Metadata.StatusInfoAttribute.Format">
+ <summary>
+ Gets or sets the format.
+ </summary>
+ <value>
+ The format.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Metadata.StatusInfoAttribute.Order">
+ <summary>
+ Gets or sets the order.
+ </summary>
+ <value>
+ The order.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Metadata.StatusInfoAttribute.OutputInPerfLog">
+ <summary>
+ Gets or sets a value indicating whether [output in perf log].
+ </summary>
+ <value>
+ <c>true</c> if [output in perf log]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Metadata.StatusInfoAttribute.DataType">
+ <summary>
+ Gets or sets the type of the data.
+ </summary>
+ <value>
+ The type of the data.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Metadata.StatusInfoKeys">
+ <summary>
+ Server StatusInfo Metadata
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.CpuUsage">
+ <summary>
+ The cpu usage
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.MemoryUsage">
+ <summary>
+ The memory usage
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.TotalThreadCount">
+ <summary>
+ The total thread count
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.AvailableWorkingThreads">
+ <summary>
+ The available working threads count
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.AvailableCompletionPortThreads">
+ <summary>
+ The available completion port threads count
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.MaxWorkingThreads">
+ <summary>
+ The max working threads count
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.MaxCompletionPortThreads">
+ <summary>
+ The max completion port threads count
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.StartedTime">
+ <summary>
+ The started time.
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.IsRunning">
+ <summary>
+ <c>true</c> if this instance is running; otherwise, <c>false</c>.
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.TotalConnections">
+ <summary>
+ The total count of the connections.
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.MaxConnectionNumber">
+ <summary>
+ The max connection number.
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.TotalHandledRequests">
+ <summary>
+ The total handled requests count.
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.RequestHandlingSpeed">
+ <summary>
+ Gets or sets the request handling speed, per second.
+ </summary>
+ <value>
+ The request handling speed.
+ </value>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.Listeners">
+ <summary>
+ Gets or sets the listeners.
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.AvialableSendingQueueItems">
+ <summary>
+ The avialable sending queue items.
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Metadata.StatusInfoKeys.TotalSendingQueueItems">
+ <summary>
+ The total sending queue items.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.NodeStatus">
+ <summary>
+ The status of one SuperSocket node (one installation or deployment)
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.NodeStatus.Save(System.String)">
+ <summary>
+ Saves the specified file path.
+ </summary>
+ <param name="filePath">The file path.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.NodeStatus.LoadFrom(System.String)">
+ <summary>
+ Loads a NodeStatus instance from a file.
+ </summary>
+ <param name="filePath">The file path.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.NodeStatus.BootstrapStatus">
+ <summary>
+ Gets or sets the bootstrap status.
+ </summary>
+ <value>
+ The bootstrap status.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.NodeStatus.InstancesStatus">
+ <summary>
+ Gets or sets the status of all server instances running in this node.
+ </summary>
+ <value>
+ The instances status.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.CommandLineReceiveFilterFactory">
+ <summary>
+ CommandLine RequestFilter Factory
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilterFactory">
+ <summary>
+ Terminator ReceiveFilter Factory
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.IReceiveFilterFactory`1">
+ <summary>
+ Receive filter factory interface
+ </summary>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.IReceiveFilterFactory">
+ <summary>
+ Receive filter factory interface
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.IReceiveFilterFactory`1.CreateFilter(SuperSocket.SocketBase.IAppServer,SuperSocket.SocketBase.IAppSession,System.Net.IPEndPoint)">
+ <summary>
+ Creates the Receive filter.
+ </summary>
+ <param name="appServer">The app server.</param>
+ <param name="appSession">The app session.</param>
+ <param name="remoteEndPoint">The remote end point.</param>
+ <returns>
+ the new created request filer assosiated with this socketSession
+ </returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilterFactory.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilterFactory"/> class.
+ </summary>
+ <param name="terminator">The terminator.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilterFactory.#ctor(System.String,System.Text.Encoding)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilterFactory"/> class.
+ </summary>
+ <param name="terminator">The terminator.</param>
+ <param name="encoding">The encoding.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilterFactory.#ctor(System.String,System.Text.Encoding,SuperSocket.SocketBase.Protocol.IRequestInfoParser{SuperSocket.SocketBase.Protocol.StringRequestInfo})">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilterFactory"/> class.
+ </summary>
+ <param name="terminator">The terminator.</param>
+ <param name="encoding">The encoding.</param>
+ <param name="requestInfoParser">The line parser.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilterFactory.CreateFilter(SuperSocket.SocketBase.IAppServer,SuperSocket.SocketBase.IAppSession,System.Net.IPEndPoint)">
+ <summary>
+ Creates the Receive filter.
+ </summary>
+ <param name="appServer">The app server.</param>
+ <param name="appSession">The app session.</param>
+ <param name="remoteEndPoint">The remote end point.</param>
+ <returns>
+ the new created request filer assosiated with this socketSession
+ </returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.CommandLineReceiveFilterFactory.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.CommandLineReceiveFilterFactory"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.CommandLineReceiveFilterFactory.#ctor(System.Text.Encoding)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.CommandLineReceiveFilterFactory"/> class.
+ </summary>
+ <param name="encoding">The encoding.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.CommandLineReceiveFilterFactory.#ctor(System.Text.Encoding,SuperSocket.SocketBase.Protocol.IRequestInfoParser{SuperSocket.SocketBase.Protocol.StringRequestInfo})">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.CommandLineReceiveFilterFactory"/> class.
+ </summary>
+ <param name="encoding">The encoding.</param>
+ <param name="requestInfoParser">The request info parser.</param>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.DefaultReceiveFilterFactory`2">
+ <summary>
+ DefaultreceiveFilterFactory
+ </summary>
+ <typeparam name="TReceiveFilter">The type of the Receive filter.</typeparam>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.DefaultReceiveFilterFactory`2.CreateFilter(SuperSocket.SocketBase.IAppServer,SuperSocket.SocketBase.IAppSession,System.Net.IPEndPoint)">
+ <summary>
+ Creates the Receive filter.
+ </summary>
+ <param name="appServer">The app server.</param>
+ <param name="appSession">The app session.</param>
+ <param name="remoteEndPoint">The remote end point.</param>
+ <returns>
+ the new created request filer assosiated with this socketSession
+ </returns>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.FilterState">
+ <summary>
+ Filter state enum
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Protocol.FilterState.Normal">
+ <summary>
+ Normal state
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Protocol.FilterState.Error">
+ <summary>
+ Error state
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.IOffsetAdapter">
+ <summary>
+ The interface for a Receive filter to adapt receiving buffer offset
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.IOffsetAdapter.OffsetDelta">
+ <summary>
+ Gets the offset delta.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.IReceiveFilter`1">
+ <summary>
+ Receive filter interface
+ </summary>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.IReceiveFilter`1.Filter(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Int32@)">
+ <summary>
+ Filters received data of the specific session into request info.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset of the current received data in this read buffer.</param>
+ <param name="length">The length of the current received data.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <param name="rest">The rest, the length of the data which hasn't been parsed.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.IReceiveFilter`1.Reset">
+ <summary>
+ Resets this instance to initial state.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.IReceiveFilter`1.LeftBufferSize">
+ <summary>
+ Gets the size of the rest buffer.
+ </summary>
+ <value>
+ The size of the rest buffer.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.IReceiveFilter`1.NextReceiveFilter">
+ <summary>
+ Gets the next Receive filter.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.IReceiveFilter`1.State">
+ <summary>
+ Gets the filter state.
+ </summary>
+ <value>
+ The filter state.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.IReceiveFilterInitializer">
+ <summary>
+ Provide the initializing interface for ReceiveFilter
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.IReceiveFilterInitializer.Initialize(SuperSocket.SocketBase.IAppServer,SuperSocket.SocketBase.IAppSession)">
+ <summary>
+ Initializes the ReceiveFilter with the specified appServer and appSession
+ </summary>
+ <param name="appServer">The app server.</param>
+ <param name="session">The session.</param>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1">
+ <summary>
+ Receive filter base class
+ </summary>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1.#ctor(SuperSocket.SocketBase.Protocol.ReceiveFilterBase{`0})">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1"/> class.
+ </summary>
+ <param name="previousRequestFilter">The previous Receive filter.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1.Initialize(SuperSocket.SocketBase.Protocol.ReceiveFilterBase{`0})">
+ <summary>
+ Initializes the specified previous Receive filter.
+ </summary>
+ <param name="previousRequestFilter">The previous Receive filter.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1.Filter(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Int32@)">
+ <summary>
+ Filters received data of the specific session into request info.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset of the current received data in this read buffer.</param>
+ <param name="length">The length of the current received data.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <param name="rest">The rest, the length of the data which hasn't been parsed.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1.AddArraySegment(System.Byte[],System.Int32,System.Int32,System.Boolean)">
+ <summary>
+ Adds the array segment.
+ </summary>
+ <param name="buffer">The buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1.ClearBufferSegments">
+ <summary>
+ Clears the buffer segments.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1.Reset">
+ <summary>
+ Resets this instance to initial state.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1.BufferSegments">
+ <summary>
+ Gets the buffer segments which can help you parse your request info conviniently.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1.LeftBufferSize">
+ <summary>
+ Gets the size of the rest buffer.
+ </summary>
+ <value>
+ The size of the rest buffer.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1.NextReceiveFilter">
+ <summary>
+ Gets or sets the next Receive filter.
+ </summary>
+ <value>
+ The next Receive filter.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.ReceiveFilterBase`1.State">
+ <summary>
+ Gets the filter state.
+ </summary>
+ <value>
+ The state.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter`1">
+ <summary>
+ Terminator Receive filter
+ </summary>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter`1.NullRequestInfo">
+ <summary>
+ Null RequestInfo
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter`1.#ctor(System.Byte[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter`1"/> class.
+ </summary>
+ <param name="terminator">The terminator.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter`1.Filter(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Int32@)">
+ <summary>
+ Filters received data of the specific session into request info.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset of the current received data in this read buffer.</param>
+ <param name="length">The length of the current received data.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <param name="rest">The rest, the length of the data which hasn't been parsed.</param>
+ <returns>return the parsed TRequestInfo</returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter`1.Reset">
+ <summary>
+ Resets this instance.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter`1.ProcessMatchedRequest(System.Byte[],System.Int32,System.Int32)">
+ <summary>
+ Resolves the specified data to TRequestInfo.
+ </summary>
+ <param name="data">The data.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter`1.Session">
+ <summary>
+ Gets the session assosiated with the Receive filter.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter">
+ <summary>
+ TerminatorRequestFilter
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter.#ctor(System.Byte[],System.Text.Encoding)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter"/> class.
+ </summary>
+ <param name="terminator">The terminator.</param>
+ <param name="encoding">The encoding.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter.#ctor(System.Byte[],System.Text.Encoding,SuperSocket.SocketBase.Protocol.IRequestInfoParser{SuperSocket.SocketBase.Protocol.StringRequestInfo})">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter"/> class.
+ </summary>
+ <param name="terminator">The terminator.</param>
+ <param name="encoding">The encoding.</param>
+ <param name="requestParser">The request parser.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.TerminatorReceiveFilter.ProcessMatchedRequest(System.Byte[],System.Int32,System.Int32)">
+ <summary>
+ Resolves the specified data to StringRequestInfo.
+ </summary>
+ <param name="data">The data.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Provider.ExportFactory">
+ <summary>
+ Export Factory
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Provider.ExportFactory.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Provider.ExportFactory"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Provider.ExportFactory.#ctor(System.Object)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Provider.ExportFactory"/> class.
+ </summary>
+ <param name="instance">The instance.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Provider.ExportFactory.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Provider.ExportFactory"/> class.
+ </summary>
+ <param name="typeName">Name of the type.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Provider.ExportFactory.EnsureInstance">
+ <summary>
+ Ensures the instance's existance.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Provider.ExportFactory.CreateExport``1">
+ <summary>
+ Creates the export type instance.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Provider.ExportFactory.CreateExport``1(System.Func{System.Type,System.Object})">
+ <summary>
+ Creates the export type instance from the instance creator.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="creator">The creator.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Provider.ExportFactory.TypeName">
+ <summary>
+ Gets or sets the type.
+ </summary>
+ <value>
+ The type.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Provider.ProviderFactoryInfo">
+ <summary>
+ Provider factory infomation
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Provider.ProviderFactoryInfo.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Provider.ProviderFactoryInfo"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Provider.ProviderFactoryInfo.#ctor(SuperSocket.SocketBase.Provider.ProviderKey,System.String,System.Object)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Provider.ProviderFactoryInfo"/> class.
+ </summary>
+ <param name="key">The key.</param>
+ <param name="name">The name.</param>
+ <param name="instance">The instance.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Provider.ProviderFactoryInfo.#ctor(SuperSocket.SocketBase.Provider.ProviderKey,System.String,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Provider.ProviderFactoryInfo"/> class.
+ </summary>
+ <param name="key">The key.</param>
+ <param name="name">The name.</param>
+ <param name="typeName">Name of the type.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Provider.ProviderFactoryInfo.#ctor(SuperSocket.SocketBase.Provider.ProviderKey,System.String,System.Type)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Provider.ProviderFactoryInfo"/> class.
+ </summary>
+ <param name="key">The key.</param>
+ <param name="name">The name.</param>
+ <param name="type">The type.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Provider.ProviderFactoryInfo.Key">
+ <summary>
+ Gets the key.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Provider.ProviderFactoryInfo.Name">
+ <summary>
+ Gets or sets the name.
+ </summary>
+ <value>
+ The name.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Provider.ProviderFactoryInfo.ExportFactory">
+ <summary>
+ Gets or sets the export factory.
+ </summary>
+ <value>
+ The export factory.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Provider.ProviderKey">
+ <summary>
+ ProviderKey
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Provider.ProviderKey.Name">
+ <summary>
+ Gets or sets the name.
+ </summary>
+ <value>
+ The name.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Provider.ProviderKey.Type">
+ <summary>
+ Gets or sets the type.
+ </summary>
+ <value>
+ The type.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Provider.ProviderKey.ServerType">
+ <summary>
+ Gets the service.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Provider.ProviderKey.SocketServerFactory">
+ <summary>
+ Gets the socket server factory.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Provider.ProviderKey.ConnectionFilter">
+ <summary>
+ Gets the connection filter.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Provider.ProviderKey.LogFactory">
+ <summary>
+ Gets the log factory.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Provider.ProviderKey.ReceiveFilterFactory">
+ <summary>
+ Gets the Receive filter factory.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Provider.ProviderKey.CommandLoader">
+ <summary>
+ Gets the command loader.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.RequestHandler`2">
+ <summary>
+ Request handler
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ <param name="session">The session.</param>
+ <param name="requestInfo">The request info.</param>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.IListenerConfig">
+ <summary>
+ The listener configuration interface
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IListenerConfig.Ip">
+ <summary>
+ Gets the ip of listener
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IListenerConfig.Port">
+ <summary>
+ Gets the port of listener
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IListenerConfig.Backlog">
+ <summary>
+ Gets the backlog.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.IListenerConfig.Security">
+ <summary>
+ Gets the security option, None/Default/Tls/Ssl/...
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.ListenerConfig">
+ <summary>
+ Listener configuration model
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Config.ListenerConfig.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Config.ListenerConfig"/> class.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ListenerConfig.Ip">
+ <summary>
+ Gets the ip of listener
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ListenerConfig.Port">
+ <summary>
+ Gets the port of listener
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ListenerConfig.Backlog">
+ <summary>
+ Gets the backlog.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ListenerConfig.Security">
+ <summary>
+ Gets/sets the security option, None/Default/Tls/Ssl/...
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.ListenerInfo">
+ <summary>
+ Listener inforamtion
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ListenerInfo.EndPoint">
+ <summary>
+ Gets or sets the listen endpoint.
+ </summary>
+ <value>
+ The end point.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ListenerInfo.BackLog">
+ <summary>
+ Gets or sets the listen backlog.
+ </summary>
+ <value>
+ The back log.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ListenerInfo.Security">
+ <summary>
+ Gets or sets the security protocol.
+ </summary>
+ <value>
+ The security.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.BinaryRequestInfo">
+ <summary>
+ Binary type request information
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.RequestInfo`1">
+ <summary>
+ RequestInfo basic class
+ </summary>
+ <typeparam name="TRequestBody">The type of the request body.</typeparam>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.IRequestInfo`1">
+ <summary>
+ Request information interface
+ </summary>
+ <typeparam name="TRequestBody">The type of the request body.</typeparam>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.IRequestInfo">
+ <summary>
+ Request information interface
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.IRequestInfo.Key">
+ <summary>
+ Gets the key of this request.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.IRequestInfo`1.Body">
+ <summary>
+ Gets the body of this request.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.RequestInfo`1.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.RequestInfo`1"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.RequestInfo`1.#ctor(System.String,`0)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.RequestInfo`1"/> class.
+ </summary>
+ <param name="key">The key.</param>
+ <param name="body">The body.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.RequestInfo`1.Initialize(System.String,`0)">
+ <summary>
+ Initializes the specified key.
+ </summary>
+ <param name="key">The key.</param>
+ <param name="body">The body.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.RequestInfo`1.Key">
+ <summary>
+ Gets the key of this request.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.RequestInfo`1.Body">
+ <summary>
+ Gets the body.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.BinaryRequestInfo.#ctor(System.String,System.Byte[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.BinaryRequestInfo"/> class.
+ </summary>
+ <param name="key">The key.</param>
+ <param name="body">The body.</param>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.CommandBase`2">
+ <summary>
+ Command base class
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.ICommand`2">
+ <summary>
+ Command basic interface
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.ICommand">
+ <summary>
+ Command basic interface
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Command.ICommand.Name">
+ <summary>
+ Gets the name.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.ICommand`2.ExecuteCommand(`0,`1)">
+ <summary>
+ Executes the command.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="requestInfo">The request info.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.CommandBase`2.ExecuteCommand(`0,`1)">
+ <summary>
+ Executes the command.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="requestInfo">The request info.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.CommandBase`2.ToString">
+ <summary>
+ Returns a <see cref="T:System.String"/> that represents this instance.
+ </summary>
+ <returns>
+ A <see cref="T:System.String"/> that represents this instance.
+ </returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Command.CommandBase`2.Name">
+ <summary>
+ Gets the name.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.CommandUpdateAction">
+ <summary>
+ Command update action enum
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Command.CommandUpdateAction.Add">
+ <summary>
+ Add command
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Command.CommandUpdateAction.Remove">
+ <summary>
+ Remove command
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Command.CommandUpdateAction.Update">
+ <summary>
+ Update command
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.CommandUpdateInfo`1">
+ <summary>
+ Command update information
+ </summary>
+ <typeparam name="T"></typeparam>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Command.CommandUpdateInfo`1.UpdateAction">
+ <summary>
+ Gets or sets the update action.
+ </summary>
+ <value>
+ The update action.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Command.CommandUpdateInfo`1.Command">
+ <summary>
+ Gets or sets the target command.
+ </summary>
+ <value>
+ The command.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.MockupCommand`2">
+ <summary>
+ Mockup command
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.MockupCommand`2.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Command.MockupCommand`2"/> class.
+ </summary>
+ <param name="name">The name.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.MockupCommand`2.ExecuteCommand(`0,`1)">
+ <summary>
+ Executes the command.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="requestInfo">The request info.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Command.MockupCommand`2.Name">
+ <summary>
+ Gets the name.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.IRequestInfo`2">
+ <summary>
+ Request information interface
+ </summary>
+ <typeparam name="TRequestHeader">The type of the request header.</typeparam>
+ <typeparam name="TRequestBody">The type of the request body.</typeparam>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.IRequestInfo`2.Header">
+ <summary>
+ Gets the header of the request.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.RequestInfo`2">
+ <summary>
+ RequestInfo with header
+ </summary>
+ <typeparam name="TRequestHeader">The type of the request header.</typeparam>
+ <typeparam name="TRequestBody">The type of the request body.</typeparam>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.RequestInfo`2.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.RequestInfo`2"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.RequestInfo`2.#ctor(System.String,`0,`1)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.RequestInfo`2"/> class.
+ </summary>
+ <param name="key">The key.</param>
+ <param name="header">The header.</param>
+ <param name="body">The body.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.RequestInfo`2.Initialize(System.String,`0,`1)">
+ <summary>
+ Initializes the specified key.
+ </summary>
+ <param name="key">The key.</param>
+ <param name="header">The header.</param>
+ <param name="body">The body.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.RequestInfo`2.Header">
+ <summary>
+ Gets the header.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.StringRequestInfo">
+ <summary>
+ String type request information
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.StringRequestInfo.#ctor(System.String,System.String,System.String[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.StringRequestInfo"/> class.
+ </summary>
+ <param name="key">The key.</param>
+ <param name="body">The body.</param>
+ <param name="parameters">The parameters.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.StringRequestInfo.GetFirstParam">
+ <summary>
+ Gets the first param.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.StringRequestInfo.Parameters">
+ <summary>
+ Gets the parameters.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.StringRequestInfo.Item(System.Int32)">
+ <summary>
+ Gets the <see cref="T:System.String"/> at the specified index.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.ReflectCommandLoader`1">
+ <summary>
+ A command loader which loads commands from assembly by reflection
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.ReflectCommandLoader`1.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Command.ReflectCommandLoader`1"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.ReflectCommandLoader`1.Initialize(SuperSocket.SocketBase.Config.IRootConfig,SuperSocket.SocketBase.IAppServer)">
+ <summary>
+ Initializes the command loader by the root config and the server instance.
+ </summary>
+ <param name="rootConfig">The root config.</param>
+ <param name="appServer">The app server.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Command.ReflectCommandLoader`1.TryLoadCommands(System.Collections.Generic.IEnumerable{`0}@)">
+ <summary>
+ Tries to load commands.
+ </summary>
+ <param name="commands">The commands.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.UdpRequestInfo">
+ <summary>
+ UdpRequestInfo, it is designed for passing in business session ID to udp request info
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.UdpRequestInfo.#ctor(System.String,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.UdpRequestInfo"/> class.
+ </summary>
+ <param name="key">The key.</param>
+ <param name="sessionID">The session ID.</param>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.UdpRequestInfo.Key">
+ <summary>
+ Gets the key of this request.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Protocol.UdpRequestInfo.SessionID">
+ <summary>
+ Gets the session ID.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.CertificateConfig">
+ <summary>
+ Certificate config model class
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Config.ICertificateConfig">
+ <summary>
+ Certificate configuration interface
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ICertificateConfig.FilePath">
+ <summary>
+ Gets the file path.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ICertificateConfig.Password">
+ <summary>
+ Gets the password.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ICertificateConfig.StoreName">
+ <summary>
+ Gets the the store where certificate locates.
+ </summary>
+ <value>
+ The name of the store.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ICertificateConfig.Thumbprint">
+ <summary>
+ Gets the thumbprint.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ICertificateConfig.StoreLocation">
+ <summary>
+ Gets the store location of the certificate.
+ </summary>
+ <value>
+ The store location.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ICertificateConfig.ClientCertificateRequired">
+ <summary>
+ Gets a value indicating whether [client certificate required].
+ </summary>
+ <value>
+ <c>true</c> if [client certificate required]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.ICertificateConfig.KeyStorageFlags">
+ <summary>
+ Gets a value that will be used to instantiate the X509Certificate2 object in the CertificateManager
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.CertificateConfig.FilePath">
+ <summary>
+ Gets/sets the file path.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.CertificateConfig.Password">
+ <summary>
+ Gets/sets the password.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.CertificateConfig.StoreName">
+ <summary>
+ Gets/sets the the store where certificate locates.
+ </summary>
+ <value>
+ The name of the store.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.CertificateConfig.StoreLocation">
+ <summary>
+ Gets/sets the store location of the certificate.
+ </summary>
+ <value>
+ The store location.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.CertificateConfig.Thumbprint">
+ <summary>
+ Gets/sets the thumbprint.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.CertificateConfig.ClientCertificateRequired">
+ <summary>
+ Gets/sets a value indicating whether [client certificate required].
+ </summary>
+ <value>
+ <c>true</c> if [client certificate required]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.Config.CertificateConfig.KeyStorageFlags">
+ <summary>
+ Gets/sets a value that will be used to instantiate the X509Certificate2 object in the CertificateManager
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IAppSession">
+ <summary>
+ The basic interface for appSession
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.ISessionBase">
+ <summary>
+ The basic session interface
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ISessionBase.SessionID">
+ <summary>
+ Gets the session ID.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ISessionBase.RemoteEndPoint">
+ <summary>
+ Gets the remote endpoint.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IAppSession.Close">
+ <summary>
+ Closes this session.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IAppSession.Close(SuperSocket.SocketBase.CloseReason)">
+ <summary>
+ Closes the session by the specified reason.
+ </summary>
+ <param name="reason">The close reason.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IAppSession.ProcessRequest(System.Byte[],System.Int32,System.Int32,System.Boolean)">
+ <summary>
+ Processes the request.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <returns>return offset delta of next receiving buffer</returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IAppSession.StartSession">
+ <summary>
+ Starts the session.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppSession.AppServer">
+ <summary>
+ Gets the app server.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppSession.SocketSession">
+ <summary>
+ Gets the socket session of the AppSession.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppSession.Items">
+ <summary>
+ Gets the items.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppSession.Config">
+ <summary>
+ Gets the config of the server.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppSession.LocalEndPoint">
+ <summary>
+ Gets the local listening endpoint.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppSession.LastActiveTime">
+ <summary>
+ Gets or sets the last active time of the session.
+ </summary>
+ <value>
+ The last active time.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppSession.StartTime">
+ <summary>
+ Gets the start time of the session.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppSession.Connected">
+ <summary>
+ Gets a value indicating whether this <see cref="T:SuperSocket.SocketBase.IAppSession"/> is connected.
+ </summary>
+ <value>
+ <c>true</c> if connected; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppSession.Charset">
+ <summary>
+ Gets or sets the charset which is used for transfering text message.
+ </summary>
+ <value>The charset.</value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppSession.PrevCommand">
+ <summary>
+ Gets or sets the previous command.
+ </summary>
+ <value>
+ The prev command.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppSession.CurrentCommand">
+ <summary>
+ Gets or sets the current executing command.
+ </summary>
+ <value>
+ The current command.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IAppSession.Logger">
+ <summary>
+ Gets the logger assosiated with this session.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IAppSession`2">
+ <summary>
+ The interface for appSession
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IAppSession`2.Initialize(SuperSocket.SocketBase.IAppServer{`0,`1},SuperSocket.SocketBase.ISocketSession)">
+ <summary>
+ Initializes the specified session.
+ </summary>
+ <param name="server">The server.</param>
+ <param name="socketSession">The socket session.</param>
+ </member>
+ <member name="T:SuperSocket.SocketBase.IConnectionFilter">
+ <summary>
+ The basic interface of connection filter
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IConnectionFilter.Initialize(System.String,SuperSocket.SocketBase.IAppServer)">
+ <summary>
+ Initializes the connection filter
+ </summary>
+ <param name="name">The name.</param>
+ <param name="appServer">The app server.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.IConnectionFilter.AllowConnect(System.Net.IPEndPoint)">
+ <summary>
+ Whether allows the connect according the remote endpoint
+ </summary>
+ <param name="remoteAddress">The remote address.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.IConnectionFilter.Name">
+ <summary>
+ Gets the name of the filter.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.ISocketServer">
+ <summary>
+ It is the basic interface of SocketServer,
+ SocketServer is the abstract server who really listen the comming sockets directly.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.ISocketServer.Start">
+ <summary>
+ Starts this instance.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.ISocketServer.ResetSessionSecurity(SuperSocket.SocketBase.IAppSession,System.Security.Authentication.SslProtocols)">
+ <summary>
+ Resets the session's security protocol.
+ </summary>
+ <param name="session">The session.</param>
+ <param name="security">The security protocol.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.ISocketServer.Stop">
+ <summary>
+ Stops this instance.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ISocketServer.IsRunning">
+ <summary>
+ Gets a value indicating whether this instance is running.
+ </summary>
+ <value>
+ <c>true</c> if this instance is running; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ISocketServer.SendingQueuePool">
+ <summary>
+ Gets the information of the sending queue pool.
+ </summary>
+ <value>
+ The sending queue pool.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.ISocketServerFactory">
+ <summary>
+ The interface for socket server factory
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.ISocketServerFactory.CreateSocketServer``1(SuperSocket.SocketBase.IAppServer,SuperSocket.SocketBase.ListenerInfo[],SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Creates the socket server instance.
+ </summary>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ <param name="appServer">The app server.</param>
+ <param name="listeners">The listeners.</param>
+ <param name="config">The config.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.SocketBase.CloseReason">
+ <summary>
+ CloseReason enum
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.CloseReason.Unknown">
+ <summary>
+ The socket is closed for unknown reason
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.CloseReason.ServerShutdown">
+ <summary>
+ Close for server shutdown
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.CloseReason.ClientClosing">
+ <summary>
+ The client close the socket
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.CloseReason.ServerClosing">
+ <summary>
+ The server side close the socket
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.CloseReason.ApplicationError">
+ <summary>
+ Application error
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.CloseReason.SocketError">
+ <summary>
+ The socket is closed for a socket error
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.CloseReason.TimeOut">
+ <summary>
+ The socket is closed by server for timeout
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.CloseReason.ProtocolError">
+ <summary>
+ Protocol error
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.CloseReason.InternalError">
+ <summary>
+ SuperSocket internal error
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.ISocketSession">
+ <summary>
+ The interface for socket session
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.ISocketSession.Initialize(SuperSocket.SocketBase.IAppSession)">
+ <summary>
+ Initializes the specified app session.
+ </summary>
+ <param name="appSession">The app session.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.ISocketSession.Start">
+ <summary>
+ Starts this instance.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.ISocketSession.Close(SuperSocket.SocketBase.CloseReason)">
+ <summary>
+ Closes the socket session for the specified reason.
+ </summary>
+ <param name="reason">The reason.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.ISocketSession.TrySend(System.Collections.Generic.IList{System.ArraySegment{System.Byte}})">
+ <summary>
+ Tries to send array segment.
+ </summary>
+ <param name="segments">The segments.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.ISocketSession.TrySend(System.ArraySegment{System.Byte})">
+ <summary>
+ Tries to send array segment.
+ </summary>
+ <param name="segment">The segment.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.ISocketSession.ApplySecureProtocol">
+ <summary>
+ Applies the secure protocol.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ISocketSession.Client">
+ <summary>
+ Gets the client socket.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ISocketSession.LocalEndPoint">
+ <summary>
+ Gets the local listening endpoint.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ISocketSession.SecureProtocol">
+ <summary>
+ Gets or sets the secure protocol.
+ </summary>
+ <value>
+ The secure protocol.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ISocketSession.Closed">
+ <summary>
+ Occurs when [closed].
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ISocketSession.AppSession">
+ <summary>
+ Gets the app session assosiated with this socket session.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.ISocketSession.OrigReceiveOffset">
+ <summary>
+ Gets the original receive buffer offset.
+ </summary>
+ <value>
+ The original receive buffer offset.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketBase.LoggerExtension">
+ <summary>
+ Logger extension class
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.LoggerExtension.Error(SuperSocket.SocketBase.Logging.ILog,SuperSocket.SocketBase.ISessionBase,System.String,System.Exception)">
+ <summary>
+ Logs the error
+ </summary>
+ <param name="logger">The logger.</param>
+ <param name="session">The session.</param>
+ <param name="title">The title.</param>
+ <param name="e">The e.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.LoggerExtension.Error(SuperSocket.SocketBase.Logging.ILog,SuperSocket.SocketBase.ISessionBase,System.String)">
+ <summary>
+ Logs the error
+ </summary>
+ <param name="logger">The logger.</param>
+ <param name="session">The session.</param>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.LoggerExtension.Info(SuperSocket.SocketBase.Logging.ILog,SuperSocket.SocketBase.ISessionBase,System.String)">
+ <summary>
+ Logs the information
+ </summary>
+ <param name="logger">The logger.</param>
+ <param name="session">The session.</param>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.LoggerExtension.Debug(SuperSocket.SocketBase.Logging.ILog,SuperSocket.SocketBase.ISessionBase,System.String)">
+ <summary>
+ Logs the debug message
+ </summary>
+ <param name="logger">The logger.</param>
+ <param name="session">The session.</param>
+ <param name="message">The message.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.LoggerExtension.LogPerf(SuperSocket.SocketBase.IAppServer,System.String)">
+ <summary>
+ Logs the performance message
+ </summary>
+ <param name="appServer">The app server.</param>
+ <param name="message">The message.</param>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.BasicRequestInfoParser">
+ <summary>
+ Basic request info parser, which parse request info by separating
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Protocol.IRequestInfoParser`1">
+ <summary>
+ The interface for request info parser
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.IRequestInfoParser`1.ParseRequestInfo(System.String)">
+ <summary>
+ Parses the request info from the source string.
+ </summary>
+ <param name="source">The source.</param>
+ <returns></returns>
+ </member>
+ <member name="F:SuperSocket.SocketBase.Protocol.BasicRequestInfoParser.DefaultInstance">
+ <summary>
+ The default singlegton instance
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.BasicRequestInfoParser.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.BasicRequestInfoParser"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.BasicRequestInfoParser.#ctor(System.String,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.Protocol.BasicRequestInfoParser"/> class.
+ </summary>
+ <param name="spliter">The spliter between command name and command parameters.</param>
+ <param name="parameterSpliter">The parameter spliter.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.Protocol.BasicRequestInfoParser.ParseRequestInfo(System.String)">
+ <summary>
+ Parses the request info.
+ </summary>
+ <param name="source">The source.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.SocketBase.ServerState">
+ <summary>
+ Server's state enum class
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.ServerState.NotInitialized">
+ <summary>
+ Not initialized
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.ServerState.Initializing">
+ <summary>
+ In initializing
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.ServerState.NotStarted">
+ <summary>
+ Has been initialized, but not started
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.ServerState.Starting">
+ <summary>
+ In starting
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.ServerState.Running">
+ <summary>
+ In running
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.ServerState.Stopping">
+ <summary>
+ In stopping
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.SessionHandler`1">
+ <summary>
+ Used for session level event handler
+ </summary>
+ <typeparam name="TAppSession">the type of the target session</typeparam>
+ <param name="session">the target session</param>
+ </member>
+ <member name="T:SuperSocket.SocketBase.SessionHandler`2">
+ <summary>
+ Used for session level event handler
+ </summary>
+ <typeparam name="TAppSession">the type of the target session</typeparam>
+ <typeparam name="TParam">the target session</typeparam>
+ <param name="session">the target session</param>
+ <param name="value">the event parameter</param>
+ </member>
+ <member name="T:SuperSocket.SocketBase.SocketMode">
+ <summary>
+ Socket server running mode
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.SocketMode.Tcp">
+ <summary>
+ Tcp mode
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketBase.SocketMode.Udp">
+ <summary>
+ Udp mode
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.AppServer">
+ <summary>
+ AppServer class
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.AppServer`1">
+ <summary>
+ AppServer class
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ </member>
+ <member name="T:SuperSocket.SocketBase.AppServer`2">
+ <summary>
+ AppServer basic class
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer`2.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.AppServer`2"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer`2.#ctor(SuperSocket.SocketBase.Protocol.IReceiveFilterFactory{`1})">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.AppServer`2"/> class.
+ </summary>
+ <param name="protocol">The protocol.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer`2.Start">
+ <summary>
+ Starts this AppServer instance.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer`2.RegisterSession(System.String,`0)">
+ <summary>
+ Registers the session into the session container.
+ </summary>
+ <param name="sessionID">The session ID.</param>
+ <param name="appSession">The app session.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer`2.GetAppSessionByID(System.String)">
+ <summary>
+ Gets the app session by ID.
+ </summary>
+ <param name="sessionID">The session ID.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer`2.GetSessionByID(System.String)">
+ <summary>
+ Gets the app session by ID.
+ </summary>
+ <param name="sessionID">The session ID.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer`2.OnSessionClosed(`0,SuperSocket.SocketBase.CloseReason)">
+ <summary>
+ Called when [socket session closed].
+ </summary>
+ <param name="session">The session.</param>
+ <param name="reason">The reason.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer`2.ClearIdleSession(System.Object)">
+ <summary>
+ Clears the idle session.
+ </summary>
+ <param name="state">The state.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer`2.GetSessions(System.Func{`0,System.Boolean})">
+ <summary>
+ Gets the matched sessions from sessions snapshot.
+ </summary>
+ <param name="critera">The prediction critera.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer`2.GetAllSessions">
+ <summary>
+ Gets all sessions in sessions snapshot.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer`2.Stop">
+ <summary>
+ Stops this instance.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppServer`2.SessionCount">
+ <summary>
+ Gets the total session count.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer`1.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.AppServer`1"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer`1.#ctor(SuperSocket.SocketBase.Protocol.IReceiveFilterFactory{SuperSocket.SocketBase.Protocol.StringRequestInfo})">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.AppServer`1"/> class.
+ </summary>
+ <param name="receiveFilterFactory">The Receive filter factory.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.AppServer"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppServer.#ctor(SuperSocket.SocketBase.Protocol.IReceiveFilterFactory{SuperSocket.SocketBase.Protocol.StringRequestInfo})">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.AppServer"/> class.
+ </summary>
+ <param name="receiveFilterFactory">The Receive filter factory.</param>
+ </member>
+ <member name="T:SuperSocket.SocketBase.AppSession`2">
+ <summary>
+ AppSession base class
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.AppSession`2"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.Initialize(SuperSocket.SocketBase.IAppServer{`0,`1},SuperSocket.SocketBase.ISocketSession)">
+ <summary>
+ Initializes the specified app session by AppServer and SocketSession.
+ </summary>
+ <param name="appServer">The app server.</param>
+ <param name="socketSession">The socket session.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.SuperSocket#SocketBase#IAppSession#StartSession">
+ <summary>
+ Starts the session.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.OnInit">
+ <summary>
+ Called when [init].
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.OnSessionStarted">
+ <summary>
+ Called when [session started].
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.OnSessionClosed(SuperSocket.SocketBase.CloseReason)">
+ <summary>
+ Called when [session closed].
+ </summary>
+ <param name="reason">The reason.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.HandleException(System.Exception)">
+ <summary>
+ Handles the exceptional error, it only handles application error.
+ </summary>
+ <param name="e">The exception.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.HandleUnknownRequest(`1)">
+ <summary>
+ Handles the unknown request.
+ </summary>
+ <param name="requestInfo">The request info.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.Close(SuperSocket.SocketBase.CloseReason)">
+ <summary>
+ Closes the session by the specified reason.
+ </summary>
+ <param name="reason">The close reason.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.Close">
+ <summary>
+ Closes this session.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.TrySend(System.String)">
+ <summary>
+ Try to send the message to client.
+ </summary>
+ <param name="message">The message which will be sent.</param>
+ <returns>Indicate whether the message was pushed into the sending queue</returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.Send(System.String)">
+ <summary>
+ Sends the message to client.
+ </summary>
+ <param name="message">The message which will be sent.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.TrySend(System.Byte[],System.Int32,System.Int32)">
+ <summary>
+ Try to send the data to client.
+ </summary>
+ <param name="data">The data which will be sent.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <returns>Indicate whether the message was pushed into the sending queue</returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.Send(System.Byte[],System.Int32,System.Int32)">
+ <summary>
+ Sends the data to client.
+ </summary>
+ <param name="data">The data which will be sent.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.TrySend(System.ArraySegment{System.Byte})">
+ <summary>
+ Try to send the data segment to client.
+ </summary>
+ <param name="segment">The segment which will be sent.</param>
+ <returns>Indicate whether the message was pushed into the sending queue</returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.Send(System.ArraySegment{System.Byte})">
+ <summary>
+ Sends the data segment to client.
+ </summary>
+ <param name="segment">The segment which will be sent.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.TrySend(System.Collections.Generic.IList{System.ArraySegment{System.Byte}})">
+ <summary>
+ Try to send the data segments to client.
+ </summary>
+ <param name="segments">The segments.</param>
+ <returns>Indicate whether the message was pushed into the sending queue; if it returns false, the sending queue may be full or the socket is not connected</returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.Send(System.Collections.Generic.IList{System.ArraySegment{System.Byte}})">
+ <summary>
+ Sends the data segments to client.
+ </summary>
+ <param name="segments">The segments.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.Send(System.String,System.Object[])">
+ <summary>
+ Sends the response.
+ </summary>
+ <param name="message">The message which will be sent.</param>
+ <param name="paramValues">The parameter values.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.SetNextReceiveFilter(SuperSocket.SocketBase.Protocol.IReceiveFilter{`1})">
+ <summary>
+ Sets the next Receive filter which will be used when next data block received
+ </summary>
+ <param name="nextReceiveFilter">The next receive filter.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.GetMaxRequestLength">
+ <summary>
+ Gets the maximum allowed length of the request.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.FilterRequest(System.Byte[],System.Int32,System.Int32,System.Boolean,System.Int32@,System.Int32@)">
+ <summary>
+ Filters the request.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <param name="rest">The rest, the size of the data which has not been processed</param>
+ <param name="offsetDelta">return offset delta of next receiving buffer.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`2.SuperSocket#SocketBase#IAppSession#ProcessRequest(System.Byte[],System.Int32,System.Int32,System.Boolean)">
+ <summary>
+ Processes the request data.
+ </summary>
+ <param name="readBuffer">The read buffer.</param>
+ <param name="offset">The offset.</param>
+ <param name="length">The length.</param>
+ <param name="toBeCopied">if set to <c>true</c> [to be copied].</param>
+ <returns>
+ return offset delta of next receiving buffer
+ </returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.AppServer">
+ <summary>
+ Gets the app server instance assosiated with the session.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.SuperSocket#SocketBase#IAppSession#AppServer">
+ <summary>
+ Gets the app server instance assosiated with the session.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.Charset">
+ <summary>
+ Gets or sets the charset which is used for transfering text message.
+ </summary>
+ <value>
+ The charset.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.Items">
+ <summary>
+ Gets the items dictionary, only support 10 items maximum
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.Connected">
+ <summary>
+ Gets a value indicating whether this <see cref="T:SuperSocket.SocketBase.IAppSession"/> is connected.
+ </summary>
+ <value>
+ <c>true</c> if connected; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.PrevCommand">
+ <summary>
+ Gets or sets the previous command.
+ </summary>
+ <value>
+ The prev command.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.CurrentCommand">
+ <summary>
+ Gets or sets the current executing command.
+ </summary>
+ <value>
+ The current command.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.SecureProtocol">
+ <summary>
+ Gets or sets the secure protocol of transportation layer.
+ </summary>
+ <value>
+ The secure protocol.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.LocalEndPoint">
+ <summary>
+ Gets the local listening endpoint.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.RemoteEndPoint">
+ <summary>
+ Gets the remote endpoint of client.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.Logger">
+ <summary>
+ Gets the logger.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.LastActiveTime">
+ <summary>
+ Gets or sets the last active time of the session.
+ </summary>
+ <value>
+ The last active time.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.StartTime">
+ <summary>
+ Gets the start time of the session.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.SessionID">
+ <summary>
+ Gets the session ID.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.SocketSession">
+ <summary>
+ Gets the socket session of the AppSession.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketBase.AppSession`2.Config">
+ <summary>
+ Gets the config of the server.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.AppSession`1">
+ <summary>
+ AppServer basic class for whose request infoe type is StringRequestInfo
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`1.#ctor">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.AppSession`1"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`1.#ctor(System.Boolean)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketBase.AppSession`1"/> class.
+ </summary>
+ <param name="appendNewLineForResponse">if set to <c>true</c> [append new line for response].</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`1.HandleUnknownRequest(SuperSocket.SocketBase.Protocol.StringRequestInfo)">
+ <summary>
+ Handles the unknown request.
+ </summary>
+ <param name="requestInfo">The request info.</param>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`1.ProcessSendingMessage(System.String)">
+ <summary>
+ Processes the sending message.
+ </summary>
+ <param name="rawMessage">The raw message.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`1.Send(System.String)">
+ <summary>
+ Sends the specified message.
+ </summary>
+ <param name="message">The message.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketBase.AppSession`1.Send(System.String,System.Object[])">
+ <summary>
+ Sends the response.
+ </summary>
+ <param name="message">The message.</param>
+ <param name="paramValues">The param values.</param>
+ <returns>Indicate whether the message was pushed into the sending queue</returns>
+ </member>
+ <member name="T:SuperSocket.SocketBase.AppSession">
+ <summary>
+ AppServer basic class for whose request infoe type is StringRequestInfo
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.StringCommandBase`1">
+ <summary>
+ A command type for whose request info type is StringRequestInfo
+ </summary>
+ <typeparam name="TAppSession">The type of the app session.</typeparam>
+ </member>
+ <member name="T:SuperSocket.SocketBase.Command.StringCommandBase">
+ <summary>
+ A command type for whose request info type is StringRequestInfo
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketBase.StatusInfoCollection">
+ <summary>
+ Status information collection
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketBase.StatusInfoCollection.GetValue``1(System.String,``0)">
+ <summary>
+ Gets the value.
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="name">The name.</param>
+ <param name="defaultValue">The default value.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketBase.StatusInfoCollection.Values">
+ <summary>
+ Gets the values.
+ </summary>
+ <value>
+ The values.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.StatusInfoCollection.Name">
+ <summary>
+ Gets or sets the name.
+ </summary>
+ <value>
+ The name.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.StatusInfoCollection.Tag">
+ <summary>
+ Gets or sets the tag.
+ </summary>
+ <value>
+ The tag.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.StatusInfoCollection.CollectedTime">
+ <summary>
+ Gets or sets the collected time.
+ </summary>
+ <value>
+ The collected time.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketBase.StatusInfoCollection.Item(System.String)">
+ <summary>
+ Gets or sets the <see cref="T:System.Object"/> with the specified name.
+ </summary>
+ <value>
+ The <see cref="T:System.Object"/>.
+ </value>
+ <param name="name">The name.</param>
+ <returns></returns>
+ </member>
+ </members>
+</doc>
diff --git a/lib/SuperSocket.SocketBase.dll b/lib/SuperSocket.SocketBase.dll
new file mode 100644
index 0000000..c4827e6
--- /dev/null
+++ b/lib/SuperSocket.SocketBase.dll
Binary files differ
diff --git a/lib/SuperSocket.SocketEngine.XML b/lib/SuperSocket.SocketEngine.XML
new file mode 100644
index 0000000..23362bf
--- /dev/null
+++ b/lib/SuperSocket.SocketEngine.XML
@@ -0,0 +1,1291 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>SuperSocket.SocketEngine</name>
+ </assembly>
+ <members>
+ <member name="T:SuperSocket.SocketEngine.AppDomainAppServer">
+ <summary>
+ AppDomainAppServer
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.IsolationAppServer.InitializeLifetimeService">
+ <summary>
+ Obtains a lifetime service object to control the lifetime policy for this instance.
+ Return null, never expired
+ </summary>
+ <returns>
+ An object of type <see cref="T:System.Runtime.Remoting.Lifetime.ILease" /> used to control the lifetime policy for this instance. This is the current lifetime service object for this instance if one exists; otherwise, a new lifetime service object initialized to the value of the <see cref="P:System.Runtime.Remoting.Lifetime.LifetimeServices.LeaseManagerPollTime" /> property.
+ </returns>
+ <PermissionSet>
+ <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="RemotingConfiguration, Infrastructure" />
+ </PermissionSet>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.IsolationAppServer.StatusMetadataExtended">
+ <summary>
+ Gets a value indicating whether [status metadata extended].
+ </summary>
+ <value>
+ <c>true</c> if [status metadata extended]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.AppDomainAppServer.#ctor(System.String,SuperSocket.SocketBase.Metadata.StatusInfoAttribute[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketEngine.AppDomainAppServer"/> class.
+ </summary>
+ <param name="serverTypeName">Name of the server type.</param>
+ <param name="serverStatusMetadata">The server status metadata.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.AppDomainAppServer.Start">
+ <summary>
+ Starts this server instance.
+ </summary>
+ <returns>
+ return true if start successfull, else false
+ </returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.WorkItemFactoryInfoLoader.ValidateProviderType(System.String)">
+ <summary>
+ Validates the type of the provider, needn't validate in default mode, because it will be validate later when initializing.
+ </summary>
+ <param name="typeName">Name of the type.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.WorkItemFactoryInfoLoader.GetServerTypeMetadata(System.String)">
+ <summary>
+ Gets the app server type's metadata, the return value is not required in this mode.
+ </summary>
+ <param name="typeName">Name of the type.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.WorkItemFactoryInfoLoader.Dispose">
+ <summary>
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.DefaultBootstrap">
+ <summary>
+ SuperSocket default bootstrap
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketEngine.DefaultBootstrap.m_Initialized">
+ <summary>
+ Indicates whether the bootstrap is initialized
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketEngine.DefaultBootstrap.m_Config">
+ <summary>
+ Global configuration
+ </summary>
+ </member>
+ <member name="F:SuperSocket.SocketEngine.DefaultBootstrap.m_GlobalLog">
+ <summary>
+ Global log
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.#ctor(System.Collections.Generic.IEnumerable{SuperSocket.SocketBase.IWorkItem})">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketEngine.DefaultBootstrap"/> class.
+ </summary>
+ <param name="appServers">The app servers.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.#ctor(SuperSocket.SocketBase.Config.IRootConfig,System.Collections.Generic.IEnumerable{SuperSocket.SocketBase.IWorkItem})">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketEngine.DefaultBootstrap"/> class.
+ </summary>
+ <param name="rootConfig">The root config.</param>
+ <param name="appServers">The app servers.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.#ctor(SuperSocket.SocketBase.Config.IRootConfig,System.Collections.Generic.IEnumerable{SuperSocket.SocketBase.IWorkItem},SuperSocket.SocketBase.Logging.ILogFactory)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketEngine.DefaultBootstrap"/> class.
+ </summary>
+ <param name="rootConfig">The root config.</param>
+ <param name="appServers">The app servers.</param>
+ <param name="logFactory">The log factory.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.#ctor(SuperSocket.SocketBase.Config.IConfigurationSource)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketEngine.DefaultBootstrap"/> class.
+ </summary>
+ <param name="config">The config.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.#ctor(SuperSocket.SocketBase.Config.IConfigurationSource,System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketEngine.DefaultBootstrap"/> class.
+ </summary>
+ <param name="config">The config.</param>
+ <param name="startupConfigFile">The startup config file.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.CreateWorkItemInstance(System.String,SuperSocket.SocketBase.Metadata.StatusInfoAttribute[])">
+ <summary>
+ Creates the work item instance.
+ </summary>
+ <param name="serviceTypeName">Name of the service type.</param>
+ <param name="serverStatusMetadata">The server status metadata.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.GetWorkItemFactoryInfoLoader(SuperSocket.SocketBase.Config.IConfigurationSource,SuperSocket.SocketBase.Logging.ILogFactory)">
+ <summary>
+ Gets the work item factory info loader.
+ </summary>
+ <param name="config">The config.</param>
+ <param name="logFactory">The log factory.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.Initialize(System.Collections.Generic.IDictionary{System.String,System.Net.IPEndPoint})">
+ <summary>
+ Initializes the bootstrap with a listen endpoint replacement dictionary
+ </summary>
+ <param name="listenEndPointReplacement">The listen end point replacement.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.Initialize(System.Func{SuperSocket.SocketBase.Config.IServerConfig,SuperSocket.SocketBase.Config.IServerConfig},SuperSocket.SocketBase.Logging.ILogFactory)">
+ <summary>
+ Initializes the bootstrap with the configuration, config resolver and log factory.
+ </summary>
+ <param name="serverConfigResolver">The server config resolver.</param>
+ <param name="logFactory">The log factory.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.Initialize(System.Func{SuperSocket.SocketBase.Config.IServerConfig,SuperSocket.SocketBase.Config.IServerConfig})">
+ <summary>
+ Initializes the bootstrap with the configuration and config resolver.
+ </summary>
+ <param name="serverConfigResolver">The server config resolver.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.Initialize(SuperSocket.SocketBase.Logging.ILogFactory)">
+ <summary>
+ Initializes the bootstrap with the configuration
+ </summary>
+ <param name="logFactory">The log factory.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.Initialize">
+ <summary>
+ Initializes the bootstrap with the configuration
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.Start">
+ <summary>
+ Starts this bootstrap.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.Stop">
+ <summary>
+ Stops this bootstrap.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.RegisterRemotingService">
+ <summary>
+ Registers the bootstrap remoting access service.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.Dispose(System.Boolean)">
+ <summary>
+ Releases unmanaged and - optionally - managed resources.
+ </summary>
+ <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.DefaultBootstrap.Dispose">
+ <summary>
+ Releases unmanaged and - optionally - managed resources.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.DefaultBootstrap.SuperSocket#SocketBase#ILoggerProvider#Logger">
+ <summary>
+ Gets the bootstrap logger.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.DefaultBootstrap.LogFactory">
+ <summary>
+ Gets the log factory.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.DefaultBootstrap.AppServers">
+ <summary>
+ Gets all the app servers running in this bootstrap
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.DefaultBootstrap.Config">
+ <summary>
+ Gets the config.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.DefaultBootstrap.StartupConfigFile">
+ <summary>
+ Gets the startup config file.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.DefaultBootstrap.PerfMonitor">
+ <summary>
+ Gets the <see cref="T:SuperSocket.SocketEngine.PerformanceMonitor"/> class.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.DefaultBootstrap.BaseDirectory">
+ <summary>
+ Gets the base directory.
+ </summary>
+ <value>
+ The base directory.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.AppDomainBootstrap">
+ <summary>
+ AppDomainBootstrap
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.AppDomainBootstrap.#ctor(SuperSocket.SocketBase.Config.IConfigurationSource)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketEngine.AppDomainBootstrap"/> class.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.AppDomainBootstrap.Initialize">
+ <summary>
+ Initializes the bootstrap with the configuration
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.AppDomainBootstrap.Initialize(System.Func{SuperSocket.SocketBase.Config.IServerConfig,SuperSocket.SocketBase.Config.IServerConfig})">
+ <summary>
+ Initializes the bootstrap with the configuration and config resolver.
+ </summary>
+ <param name="serverConfigResolver">The server config resolver.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.AppDomainBootstrap.Initialize(SuperSocket.SocketBase.Logging.ILogFactory)">
+ <summary>
+ Initializes the bootstrap with the configuration and config resolver.
+ </summary>
+ <param name="logFactory">The log factory.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.AppDomainBootstrap.Initialize(System.Collections.Generic.IDictionary{System.String,System.Net.IPEndPoint})">
+ <summary>
+ Initializes the bootstrap with a listen endpoint replacement dictionary
+ </summary>
+ <param name="listenEndPointReplacement">The listen end point replacement.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.AppDomainBootstrap.Initialize(System.Func{SuperSocket.SocketBase.Config.IServerConfig,SuperSocket.SocketBase.Config.IServerConfig},SuperSocket.SocketBase.Logging.ILogFactory)">
+ <summary>
+ Initializes the bootstrap with the configuration
+ </summary>
+ <param name="serverConfigResolver">The server config resolver.</param>
+ <param name="logFactory">The log factory.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.AppDomainBootstrap.Start">
+ <summary>
+ Starts this bootstrap.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.AppDomainBootstrap.Stop">
+ <summary>
+ Stops this bootstrap.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.AppDomainBootstrap.AppServers">
+ <summary>
+ Gets all the app servers running in this bootstrap
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.AppDomainBootstrap.Config">
+ <summary>
+ Gets the config.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.AppDomainBootstrap.SuperSocket#SocketBase#ILoggerProvider#Logger">
+ <summary>
+ Gets the bootstrap logger.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.AppDomainBootstrap.StartupConfigFile">
+ <summary>
+ Gets the startup config file.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.AssemblyImport">
+ <summary>
+ AssemblyImport, used for importing assembly to the current AppDomain
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.AssemblyImport.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketEngine.AssemblyImport"/> class.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.BootstrapFactory">
+ <summary>
+ Bootstrap Factory
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.BootstrapFactory.CreateBootstrap(SuperSocket.SocketBase.Config.IConfigurationSource)">
+ <summary>
+ Creates the bootstrap.
+ </summary>
+ <param name="config">The config.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.BootstrapFactory.CreateBootstrap">
+ <summary>
+ Creates the bootstrap from app configuration's socketServer section.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.BootstrapFactory.CreateBootstrap(System.String)">
+ <summary>
+ Creates the bootstrap.
+ </summary>
+ <param name="configSectionName">Name of the config section.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.BootstrapFactory.CreateBootstrapFromConfigFile(System.String)">
+ <summary>
+ Creates the bootstrap from configuration file.
+ </summary>
+ <param name="configFile">The configuration file.</param>
+ <returns></returns>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.ConfigurationWatcher">
+ <summary>
+ The configuration file watcher, it is used for hot configuration updating
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.ConfigurationWatcher.Watch(System.Configuration.ConfigurationSection,SuperSocket.SocketBase.IBootstrap)">
+ <summary>
+ Watches the specified configuration section.
+ </summary>
+ <param name="configSection">The configuration section.</param>
+ <param name="bootstrap">The bootstrap.</param>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.Configuration.CommandAssembly">
+ <summary>
+ Command assembly configuration element
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.CommandAssembly.Assembly">
+ <summary>
+ Gets the assembly name.
+ </summary>
+ <value>
+ The assembly.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.Configuration.CommandAssemblyCollection">
+ <summary>
+ Command assembly configuation collection
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.Configuration.Server">
+ <summary>
+ Server, the port which is compatible with .Net 4.5 or higher
+ </summary>
+ <summary>
+ Server configuration
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.Configuration.Server.GetChildConfig``1(System.String)">
+ <summary>
+ Gets the child config.
+ </summary>
+ <typeparam name="TConfig">The type of the config.</typeparam>
+ <param name="childConfigName">Name of the child config.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.Configuration.Server.OnDeserializeUnrecognizedAttribute(System.String,System.String)">
+ <summary>
+ Gets a value indicating whether an unknown attribute is encountered during deserialization.
+ To keep compatible with old configuration
+ </summary>
+ <param name="name">The name of the unrecognized attribute.</param>
+ <param name="value">The value of the unrecognized attribute.</param>
+ <returns>
+ true when an unknown attribute is encountered while deserializing; otherwise, false.
+ </returns>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.DefaultCulture">
+ <summary>
+ Gets/sets the default culture for this server.
+ </summary>
+ <value>
+ The default culture.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.ServerTypeName">
+ <summary>
+ Gets the name of the server type this appServer want to use.
+ </summary>
+ <value>
+ The name of the server type.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.ServerType">
+ <summary>
+ Gets the type definition of the appserver.
+ </summary>
+ <value>
+ The type of the server.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.ReceiveFilterFactory">
+ <summary>
+ Gets the Receive filter factory.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.Ip">
+ <summary>
+ Gets the ip.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.Port">
+ <summary>
+ Gets the port.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.Mode">
+ <summary>
+ Gets the mode.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.Disabled">
+ <summary>
+ Gets a value indicating whether this <see cref="T:SuperSocket.SocketBase.Config.IServerConfig"/> is disabled.
+ </summary>
+ <value>
+ <c>true</c> if disabled; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.SendTimeOut">
+ <summary>
+ Gets the send time out.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.MaxConnectionNumber">
+ <summary>
+ Gets the max connection number.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.ReceiveBufferSize">
+ <summary>
+ Gets the size of the receive buffer.
+ </summary>
+ <value>
+ The size of the receive buffer.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.SendBufferSize">
+ <summary>
+ Gets the size of the send buffer.
+ </summary>
+ <value>
+ The size of the send buffer.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.SyncSend">
+ <summary>
+ Gets a value indicating whether sending is in synchronous mode.
+ </summary>
+ <value>
+ <c>true</c> if [sync send]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.LogCommand">
+ <summary>
+ Gets a value indicating whether log command in log file.
+ </summary>
+ <value><c>true</c> if log command; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.LogBasicSessionActivity">
+ <summary>
+ Gets a value indicating whether [log basic session activity like connected and disconnected].
+ </summary>
+ <value>
+ <c>true</c> if [log basic session activity]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.LogAllSocketException">
+ <summary>
+ Gets a value indicating whether [log all socket exception].
+ </summary>
+ <value>
+ <c>true</c> if [log all socket exception]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.ClearIdleSession">
+ <summary>
+ Gets a value indicating whether clear idle session.
+ </summary>
+ <value><c>true</c> if clear idle session; otherwise, <c>false</c>.</value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.ClearIdleSessionInterval">
+ <summary>
+ Gets the clear idle session interval, in seconds.
+ </summary>
+ <value>The clear idle session interval.</value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.IdleSessionTimeOut">
+ <summary>
+ Gets the idle session timeout time length, in seconds.
+ </summary>
+ <value>The idle session time out.</value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.CertificateConfig">
+ <summary>
+ Gets the certificate config.
+ </summary>
+ <value>The certificate config.</value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.Certificate">
+ <summary>
+ Gets X509Certificate configuration.
+ </summary>
+ <value>
+ X509Certificate configuration.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.Security">
+ <summary>
+ Gets the security protocol, X509 certificate.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.MaxRequestLength">
+ <summary>
+ Gets the max allowed length of request.
+ </summary>
+ <value>
+ The max allowed length of request.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.DisableSessionSnapshot">
+ <summary>
+ Gets a value indicating whether [disable session snapshot]
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.SessionSnapshotInterval">
+ <summary>
+ Gets the interval to taking snapshot for all live sessions.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.ConnectionFilter">
+ <summary>
+ Gets the connection filters used by this server instance.
+ </summary>
+ <value>
+ The connection filters's name list, seperated by comma
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.CommandLoader">
+ <summary>
+ Gets the command loader, multiple values should be separated by comma.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.KeepAliveTime">
+ <summary>
+ Gets the start keep alive time, in seconds
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.KeepAliveInterval">
+ <summary>
+ Gets the keep alive interval, in seconds.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.ListenBacklog">
+ <summary>
+ Gets the backlog size of socket listening.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.StartupOrder">
+ <summary>
+ Gets the startup order of the server instance.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.SendingQueueSize">
+ <summary>
+ Gets/sets the size of the sending queue.
+ </summary>
+ <value>
+ The size of the sending queue.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.LogFactory">
+ <summary>
+ Gets the logfactory name of the server instance.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.TextEncoding">
+ <summary>
+ Gets the default text encoding.
+ </summary>
+ <value>
+ The text encoding.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.Listeners">
+ <summary>
+ Gets the listeners' configuration.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.SuperSocket#SocketBase#Config#IServerConfig#Listeners">
+ <summary>
+ Gets the listeners' configuration.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Server.CommandAssemblies">
+ <summary>
+ Gets the command assemblies configuration.
+ </summary>
+ <value>
+ The command assemblies.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.Configuration.SocketServiceConfig">
+ <summary>
+ SocketServiceConfig, the part which is compatible with .Net 4.5 or higher
+ </summary>
+ <summary>
+ SuperSocket's root configuration node
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.OnDeserializeUnrecognizedElement(System.String,System.Xml.XmlReader)">
+ <summary>
+ Gets a value indicating whether an unknown element is encountered during deserialization.
+ To keep compatible with old configuration
+ </summary>
+ <param name="elementName">The name of the unknown subelement.</param>
+ <param name="reader">The <see cref="T:System.Xml.XmlReader"/> being used for deserialization.</param>
+ <returns>
+ true when an unknown element is encountered while deserializing; otherwise, false.
+ </returns>
+ <exception cref="T:System.Configuration.ConfigurationErrorsException">The element identified by <paramref name="elementName"/> is locked.- or -One or more of the element's attributes is locked.- or -<paramref name="elementName"/> is unrecognized, or the element has an unrecognized attribute.- or -The element has a Boolean attribute with an invalid value.- or -An attempt was made to deserialize a property more than once.- or -An attempt was made to deserialize a property that is not a valid member of the element.- or -The element cannot contain a CDATA or text element.</exception>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.OnDeserializeUnrecognizedAttribute(System.String,System.String)">
+ <summary>
+ Gets a value indicating whether an unknown attribute is encountered during deserialization.
+ </summary>
+ <param name="name">The name of the unrecognized attribute.</param>
+ <param name="value">The value of the unrecognized attribute.</param>
+ <returns>
+ true when an unknown attribute is encountered while deserializing; otherwise, false.
+ </returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.GetChildConfig``1(System.String)">
+ <summary>
+ Gets the child config.
+ </summary>
+ <typeparam name="TConfig">The type of the config.</typeparam>
+ <param name="childConfigName">Name of the child config.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.DefaultCulture">
+ <summary>
+ Gets/sets the default culture for all server instances.
+ </summary>
+ <value>
+ The default culture.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.Servers">
+ <summary>
+ Gets all the server configurations
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.ServerTypes">
+ <summary>
+ Gets the service configurations
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.ConnectionFilters">
+ <summary>
+ Gets all the connection filter configurations.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.LogFactories">
+ <summary>
+ Gets the defined log factory types.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.ReceiveFilterFactories">
+ <summary>
+ Gets the logfactory name of the bootstrap.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.CommandLoaders">
+ <summary>
+ Gets the command loaders definition.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.MaxWorkingThreads">
+ <summary>
+ Gets the max working threads.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.MinWorkingThreads">
+ <summary>
+ Gets the min working threads.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.MaxCompletionPortThreads">
+ <summary>
+ Gets the max completion port threads.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.MinCompletionPortThreads">
+ <summary>
+ Gets the min completion port threads.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.PerformanceDataCollectInterval">
+ <summary>
+ Gets the performance data collect interval, in seconds.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.DisablePerformanceDataCollector">
+ <summary>
+ Gets a value indicating whether [disable performance data collector].
+ </summary>
+ <value>
+ <c>true</c> if [disable performance data collector]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.Isolation">
+ <summary>
+ Gets the isolation mode.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.LogFactory">
+ <summary>
+ Gets the logfactory name of the bootstrap.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.SocketServiceConfig.OptionElements">
+ <summary>
+ Gets the option elements.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.IPerformanceMonitor">
+ <summary>
+ Interface of IPerformanceMonitor
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.IPerformanceMonitor.Start">
+ <summary>
+ Start PerformanceMonitor.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.IPerformanceMonitor.Stop">
+ <summary>
+ Stop PerformanceMonitor.
+ </summary>
+ </member>
+ <member name="E:SuperSocket.SocketEngine.IPerformanceMonitor.OnStatusUpdate">
+ <summary>
+ Invokes when status update.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.IPerformanceMonitor.StatusUpdateInterval">
+ <summary>
+ Get or Set status update time in seconds.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.IProcessServer">
+ <summary>
+ the interface for server instance which works as a process
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.IProcessServer.ProcessId">
+ <summary>
+ Gets the process id.
+ </summary>
+ <value>
+ The process id. If the process id is zero, the server instance is not running
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.IRemoteWorkItem">
+ <summary>
+ IRemoteWorkItem
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.IRemoteWorkItem.Setup(System.String,System.String,System.String,SuperSocket.SocketBase.Config.IServerConfig,SuperSocket.SocketBase.Provider.ProviderFactoryInfo[],System.String)">
+ <summary>
+ Setups the specified config.
+ </summary>
+ <param name="serverType">Type of the server.</param>
+ <param name="bootstrapUri">The bootstrap URI.</param>
+ <param name="assemblyImportRoot">The assembly import root.</param>
+ <param name="config">The config.</param>
+ <param name="factories">The factories.</param>
+ <param name="startupConfigFile">The startup configuration file path</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.ProcessAppServer.#ctor(System.String,SuperSocket.SocketBase.Metadata.StatusInfoAttribute[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketEngine.ProcessAppServer"/> class.
+ </summary>
+ <param name="serverTypeName">Name of the server type.</param>
+ <param name="serverStatusMetadata">The server status metadata.</param>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.ProcessAppServer.ProcessId">
+ <summary>
+ Gets the process id.
+ </summary>
+ <value>
+ The process id. If the process id is zero, the server instance is not running
+ </value>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.ProcessBootstrap.#ctor(SuperSocket.SocketBase.Config.IConfigurationSource)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketEngine.ProcessBootstrap"/> class.
+ </summary>
+ <param name="config">The config.</param>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.SocketSession">
+ <summary>
+ Socket Session, all application session should base on this class
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.SocketSession.LogError(System.Exception,System.String,System.String,System.Int32)">
+ <summary>
+ Logs the error, skip the ignored exception
+ </summary>
+ <param name="exception">The exception.</param>
+ <param name="caller">The caller.</param>
+ <param name="callerFilePath">The caller file path.</param>
+ <param name="callerLineNumber">The caller line number.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.SocketSession.LogError(System.String,System.Exception,System.String,System.String,System.Int32)">
+ <summary>
+ Logs the error, skip the ignored exception
+ </summary>
+ <param name="message">The message.</param>
+ <param name="exception">The exception.</param>
+ <param name="caller">The caller.</param>
+ <param name="callerFilePath">The caller file path.</param>
+ <param name="callerLineNumber">The caller line number.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.SocketSession.LogError(System.Int32,System.String,System.String,System.Int32)">
+ <summary>
+ Logs the socket error, skip the ignored error
+ </summary>
+ <param name="socketErrorCode">The socket error code.</param>
+ <param name="caller">The caller.</param>
+ <param name="callerFilePath">The caller file path.</param>
+ <param name="callerLineNumber">The caller line number.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.SocketSession.Start">
+ <summary>
+ Starts this session.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.SocketSession.StartSession">
+ <summary>
+ Says the welcome information when a client connectted.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.SocketSession.OnClosed(SuperSocket.SocketBase.CloseReason)">
+ <summary>
+ Called when [close].
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.SocketSession.TrySend(System.Collections.Generic.IList{System.ArraySegment{System.Byte}})">
+ <summary>
+ Tries to send array segment.
+ </summary>
+ <param name="segments">The segments.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.SocketSession.TrySend(System.ArraySegment{System.Byte})">
+ <summary>
+ Tries to send array segment.
+ </summary>
+ <param name="segment">The segment.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.SocketSession.SendAsync(SuperSocket.Common.SendingQueue)">
+ <summary>
+ Sends in async mode.
+ </summary>
+ <param name="queue">The queue.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.SocketSession.SendSync(SuperSocket.Common.SendingQueue)">
+ <summary>
+ Sends in sync mode.
+ </summary>
+ <param name="queue">The queue.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.SocketSession.ValidateNotInSendingReceiving">
+ <summary>
+ Validates the socket is not in the sending or receiving operation.
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.SocketSession.SessionID">
+ <summary>
+ Gets or sets the session ID.
+ </summary>
+ <value>The session ID.</value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.SocketSession.Config">
+ <summary>
+ Gets or sets the config.
+ </summary>
+ <value>
+ The config.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.SocketSession.Closed">
+ <summary>
+ Occurs when [closed].
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.SocketSession.Client">
+ <summary>
+ Gets or sets the client.
+ </summary>
+ <value>The client.</value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.SocketSession.LocalEndPoint">
+ <summary>
+ Gets the local end point.
+ </summary>
+ <value>The local end point.</value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.SocketSession.RemoteEndPoint">
+ <summary>
+ Gets the remote end point.
+ </summary>
+ <value>The remote end point.</value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.SocketSession.SecureProtocol">
+ <summary>
+ Gets or sets the secure protocol.
+ </summary>
+ <value>The secure protocol.</value>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.MarshalAppServer.#ctor(System.String)">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketEngine.AppDomainAppServer"/> class.
+ </summary>
+ <param name="serviceTypeName">Name of the service type.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.MarshalAppServer.Setup(SuperSocket.SocketBase.IBootstrap,SuperSocket.SocketBase.Config.IServerConfig,SuperSocket.SocketBase.Provider.ProviderFactoryInfo[])">
+ <summary>
+ Setups the specified root config.
+ </summary>
+ <param name="bootstrap">The bootstrap.</param>
+ <param name="config">The socket server instance config.</param>
+ <param name="factories">The providers.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.MarshalAppServer.ReportPotentialConfigChange(SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Reports the potential configuration change.
+ </summary>
+ <param name="config">The server config which may be changed.</param>
+ <exception cref="T:System.NotImplementedException"></exception>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.MarshalAppServer.Start">
+ <summary>
+ Starts this server instance.
+ </summary>
+ <returns>
+ return true if start successfull, else false
+ </returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.MarshalAppServer.Stop">
+ <summary>
+ Stops this server instance.
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.MarshalAppServer.InitializeLifetimeService">
+ <summary>
+ Obtains a lifetime service object to control the lifetime policy for this instance.
+ </summary>
+ <returns>
+ An object of type <see cref="T:System.Runtime.Remoting.Lifetime.ILease" /> used to control the lifetime policy for this instance. This is the current lifetime service object for this instance if one exists; otherwise, a new lifetime service object initialized to the value of the <see cref="P:System.Runtime.Remoting.Lifetime.LifetimeServices.LeaseManagerPollTime" /> property.
+ </returns>
+ <PermissionSet>
+ <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="RemotingConfiguration, Infrastructure" />
+ </PermissionSet>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.MarshalAppServer.Name">
+ <summary>
+ Gets the name of the server instance.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.MarshalAppServer.Config">
+ <summary>
+ Gets the server's config.
+ </summary>
+ <value>
+ The server's config.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.MarshalAppServer.State">
+ <summary>
+ Gets the current state of the work item.
+ </summary>
+ <value>
+ The state.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.MarshalAppServer.SessionCount">
+ <summary>
+ Gets the total session count.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.ISocketListener">
+ <summary>
+ The interface for socket listener
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.ISocketListener.Start(SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Starts to listen
+ </summary>
+ <param name="config">The server config.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.ISocketListener.Stop">
+ <summary>
+ Stops listening
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.ISocketListener.Info">
+ <summary>
+ Gets the info of listener
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.ISocketListener.EndPoint">
+ <summary>
+ Gets the end point the listener is working on
+ </summary>
+ </member>
+ <member name="E:SuperSocket.SocketEngine.ISocketListener.NewClientAccepted">
+ <summary>
+ Occurs when new client accepted.
+ </summary>
+ </member>
+ <member name="E:SuperSocket.SocketEngine.ISocketListener.Error">
+ <summary>
+ Occurs when error got.
+ </summary>
+ </member>
+ <member name="E:SuperSocket.SocketEngine.ISocketListener.Stopped">
+ <summary>
+ Occurs when [stopped].
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.SocketListenerBase.Start(SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Starts to listen
+ </summary>
+ <param name="config">The server config.</param>
+ <returns></returns>
+ </member>
+ <member name="E:SuperSocket.SocketEngine.SocketListenerBase.Stopped">
+ <summary>
+ Occurs when [stopped].
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.TcpAsyncSocketListener">
+ <summary>
+ Tcp socket listener in async mode
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.TcpAsyncSocketListener.Start(SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Starts to listen
+ </summary>
+ <param name="config">The server config.</param>
+ <returns></returns>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.SocketServerBase.SendingQueuePool">
+ <summary>
+ Gets the sending queue manager.
+ </summary>
+ <value>
+ The sending queue manager.
+ </value>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.INegotiateSocketSession">
+ <summary>
+ The interface for socket session which requires negotiation before communication
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.INegotiateSocketSession.Negotiate">
+ <summary>
+ Start negotiates
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.INegotiateSocketSession.Result">
+ <summary>
+ Gets a value indicating whether this <see cref="T:SuperSocket.SocketEngine.INegotiateSocketSession"/> is result.
+ </summary>
+ <value>
+ <c>true</c> if result; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.INegotiateSocketSession.AppSession">
+ <summary>
+ Gets the app session.
+ </summary>
+ <value>
+ The app session.
+ </value>
+ </member>
+ <member name="E:SuperSocket.SocketEngine.INegotiateSocketSession.NegotiateCompleted">
+ <summary>
+ Occurs when [negotiate completed].
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.AsyncStreamSocketSession.Start">
+ <summary>
+ Starts this session communication.
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.Configuration.CertificateConfig">
+ <summary>
+ Certificate configuration
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.CertificateConfig.FilePath">
+ <summary>
+ Gets the certificate file path.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.CertificateConfig.Password">
+ <summary>
+ Gets the password.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.CertificateConfig.StoreName">
+ <summary>
+ Gets the the store where certificate locates.
+ </summary>
+ <value>
+ The name of the store.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.CertificateConfig.StoreLocation">
+ <summary>
+ Gets the store location of the certificate.
+ </summary>
+ <value>
+ The store location.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.CertificateConfig.Thumbprint">
+ <summary>
+ Gets the thumbprint.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.CertificateConfig.ClientCertificateRequired">
+ <summary>
+ Gets a value indicating whether [client certificate required].
+ </summary>
+ <value>
+ <c>true</c> if [client certificate required]; otherwise, <c>false</c>.
+ </value>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.CertificateConfig.KeyStorageFlags">
+ <summary>
+ Gets a value that will be used to instantiate the X509Certificate2 object in the CertificateManager
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.Configuration.Listener">
+ <summary>
+ Listener configuration
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Listener.Ip">
+ <summary>
+ Gets the ip of listener
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Listener.Port">
+ <summary>
+ Gets the port of listener
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Listener.Backlog">
+ <summary>
+ Gets the backlog.
+ </summary>
+ </member>
+ <member name="P:SuperSocket.SocketEngine.Configuration.Listener.Security">
+ <summary>
+ Gets the security option, None/Default/Tls/Ssl/...
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.Configuration.ListenerConfigCollection">
+ <summary>
+ Listener configuration collection
+ </summary>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.Configuration.ServerCollection">
+ <summary>
+ Server configuration collection
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.Configuration.ServerCollection.AddNew(SuperSocket.SocketEngine.Configuration.Server)">
+ <summary>
+ Adds the new server element.
+ </summary>
+ <param name="newServer">The new server.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.Configuration.ServerCollection.Remove(System.String)">
+ <summary>
+ Removes the specified server from the configuration.
+ </summary>
+ <param name="name">The name.</param>
+ </member>
+ <member name="T:SuperSocket.SocketEngine.SocketServerFactory">
+ <summary>
+ Default socket server factory
+ </summary>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.SocketServerFactory.CreateSocketServer``1(SuperSocket.SocketBase.IAppServer,SuperSocket.SocketBase.ListenerInfo[],SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Creates the socket server.
+ </summary>
+ <typeparam name="TRequestInfo">The type of the request info.</typeparam>
+ <param name="appServer">The app server.</param>
+ <param name="listeners">The listeners.</param>
+ <param name="config">The config.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.UdpSocketListener.Start(SuperSocket.SocketBase.Config.IServerConfig)">
+ <summary>
+ Starts to listen
+ </summary>
+ <param name="config">The server config.</param>
+ <returns></returns>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.UdpSocketServer`1.#ctor(SuperSocket.SocketBase.IAppServer,SuperSocket.SocketBase.ListenerInfo[])">
+ <summary>
+ Initializes a new instance of the <see cref="T:SuperSocket.SocketEngine.UdpSocketServer`1"/> class.
+ </summary>
+ <param name="appServer">The app server.</param>
+ <param name="listeners">The listeners.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.UdpSocketServer`1.OnNewClientAccepted(SuperSocket.SocketEngine.ISocketListener,System.Net.Sockets.Socket,System.Object)">
+ <summary>
+ Called when [new client accepted].
+ </summary>
+ <param name="listener">The listener.</param>
+ <param name="client">The client.</param>
+ <param name="state">The state.</param>
+ </member>
+ <member name="M:SuperSocket.SocketEngine.UdpSocketSession.UpdateRemoteEndPoint(System.Net.IPEndPoint)">
+ <summary>
+ Updates the remote end point of the client.
+ </summary>
+ <param name="remoteEndPoint">The remote end point.</param>
+ </member>
+ </members>
+</doc>
diff --git a/lib/SuperSocket.SocketEngine.dll b/lib/SuperSocket.SocketEngine.dll
new file mode 100644
index 0000000..a7ae3dc
--- /dev/null
+++ b/lib/SuperSocket.SocketEngine.dll
Binary files differ
diff --git a/lib/_log4net.dll b/lib/_log4net.dll
new file mode 100644
index 0000000..5752c20
--- /dev/null
+++ b/lib/_log4net.dll
Binary files differ
diff --git a/lib/log4net.xml b/lib/_log4net.xml
similarity index 100%
rename from lib/log4net.xml
rename to lib/_log4net.xml
diff --git a/lib/log4net.dll b/lib/log4net.dll
index 5752c20..47cd9ad 100644
--- a/lib/log4net.dll
+++ b/lib/log4net.dll
Binary files differ
--
Gitblit v1.9.1