Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
cdy816
Mars
提交
814d25a8
Mars
项目概览
cdy816
/
Mars
通知
3
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Mars
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
814d25a8
编写于
8月 27, 2020
作者:
cdy816
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://github.com/cdy816/mars
上级
1b949315
d3f8ef75
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
205 addition
and
73 deletion
+205
-73
Common/Cdy.Tag.Network/SocketClient.cs
Common/Cdy.Tag.Network/SocketClient.cs
+6
-3
Common/Cdy.Tag.Network/SocketServer.cs
Common/Cdy.Tag.Network/SocketServer.cs
+9
-7
RunTime/DBInRun/Properties/launchSettings.json
RunTime/DBInRun/Properties/launchSettings.json
+1
-1
RunTime/DBRuntime/Driver/DriverManager.cs
RunTime/DBRuntime/Driver/DriverManager.cs
+3
-1
RunTime/DBRuntime/His/Compress/CompressEnginer2.cs
RunTime/DBRuntime/His/Compress/CompressEnginer2.cs
+3
-0
RunTime/DBRuntime/His/HisEnginer2.cs
RunTime/DBRuntime/His/HisEnginer2.cs
+3
-1
RunTime/DBRuntime/His/SeriseEnginer2.cs
RunTime/DBRuntime/His/SeriseEnginer2.cs
+2
-0
RunTime/DBRuntime/RDDC/DataSync.cs
RunTime/DBRuntime/RDDC/DataSync.cs
+15
-4
RunTime/DBRuntime/RDDC/RDDCClient.cs
RunTime/DBRuntime/RDDC/RDDCClient.cs
+56
-40
RunTime/DBRuntime/RDDC/RDDCManager.cs
RunTime/DBRuntime/RDDC/RDDCManager.cs
+60
-4
RunTime/DBRuntime/RDDC/WorStateServerProcess.cs
RunTime/DBRuntime/RDDC/WorStateServerProcess.cs
+25
-6
RunTime/DBRuntime/Runner.cs
RunTime/DBRuntime/Runner.cs
+22
-6
未找到文件。
Common/Cdy.Tag.Network/SocketClient.cs
浏览文件 @
814d25a8
...
...
@@ -67,10 +67,13 @@ namespace Cdy.Tag
get
{
return
mIsConnected
;
}
set
{
mIsConnected
=
value
;
if
(
PropertyChanged
!=
null
)
if
(
mIsConnected
!=
value
)
{
Task
.
Run
(()
=>
{
PropertyChanged
(
this
,
new
PropertyChangedEventArgs
(
"IsConnected"
));
});
mIsConnected
=
value
;
if
(
PropertyChanged
!=
null
)
{
Task
.
Run
(()
=>
{
PropertyChanged
(
this
,
new
PropertyChangedEventArgs
(
"IsConnected"
));
});
}
}
}
}
...
...
Common/Cdy.Tag.Network/SocketServer.cs
浏览文件 @
814d25a8
...
...
@@ -330,15 +330,17 @@ namespace Cdy.Tag
internal
void
Registor
(
IChannelHandlerContext
channel
)
{
string
sname
=
GetClientId
(
channel
);
if
(!
mClients
.
ContainsKey
(
sname
)
)
lock
(
mClients
)
{
mClients
[
sname
]
=
channel
;
}
else
{
mClients
.
Add
(
sname
,
channel
);
if
(!
mClients
.
ContainsKey
(
sname
))
{
mClients
[
sname
]
=
channel
;
}
else
{
mClients
.
Add
(
sname
,
channel
);
}
}
OnClientConnected
(
sname
);
}
...
...
RunTime/DBInRun/Properties/launchSettings.json
浏览文件 @
814d25a8
...
...
@@ -2,7 +2,7 @@
"profiles"
:
{
"DBInRun"
:
{
"commandName"
:
"Executable"
,
"executablePath"
:
"C:
\\
Users
\\
c
hongdaoyang
\\
source
\\
repos
\\
mars
\\
Output
\\
DBInRun.exe"
"executablePath"
:
"C:
\\
Users
\\
c
dy81
\\
source
\\
repos
\\
mars
\\
Output
\\
DBInRun.exe"
}
}
}
\ No newline at end of file
RunTime/DBRuntime/Driver/DriverManager.cs
浏览文件 @
814d25a8
...
...
@@ -92,7 +92,8 @@ namespace Cdy.Tag
/// </summary>
public
void
Start
()
{
foreach
(
var
vv
in
mDrivers
.
Values
)
LoggerService
.
Service
.
Info
(
"DriverManager"
,
"start to Start"
);
foreach
(
var
vv
in
mDrivers
.
Values
)
{
vv
.
Start
(
mTagDriverService
);
}
...
...
@@ -103,6 +104,7 @@ namespace Cdy.Tag
/// </summary>
public
void
Stop
()
{
LoggerService
.
Service
.
Info
(
"DriverManager"
,
"start to stop"
);
foreach
(
var
vv
in
mDrivers
.
Values
)
{
vv
.
Stop
();
...
...
RunTime/DBRuntime/His/Compress/CompressEnginer2.cs
浏览文件 @
814d25a8
...
...
@@ -149,6 +149,7 @@ namespace Cdy.Tag
/// </summary>
public
void
Start
()
{
LoggerService
.
Service
.
Info
(
"CompressEnginer"
,
"start to Start"
);
mIsClosed
=
false
;
//Init();
resetEvent
=
new
ManualResetEvent
(
false
);
...
...
@@ -163,6 +164,8 @@ namespace Cdy.Tag
/// </summary>
public
void
Stop
()
{
LoggerService
.
Service
.
Info
(
"CompressEnginer"
,
"start to stop"
);
mIsClosed
=
true
;
resetEvent
.
Set
();
closedEvent
.
WaitOne
();
...
...
RunTime/DBRuntime/His/HisEnginer2.cs
浏览文件 @
814d25a8
...
...
@@ -736,6 +736,7 @@ namespace Cdy.Tag
/// </summary>
public
void
Start
()
{
LoggerService
.
Service
.
Info
(
"HisEnginer"
,
"start to Start"
);
mIsClosed
=
false
;
mMegerProcessIsClosed
=
false
;
LoggerService
.
Service
.
Info
(
"Record"
,
"历史变量个数: "
+
this
.
mHisTags
.
Count
);
...
...
@@ -1133,9 +1134,10 @@ namespace Cdy.Tag
/// </summary>
public
void
Stop
()
{
mRecordTimer
.
Stop
(
);
LoggerService
.
Service
.
Info
(
"HisEnginer"
,
"start to stop"
);
if
(
mRecordTimer
!=
null
)
{
mRecordTimer
.
Stop
();
mRecordTimer
.
Elapsed
-=
MRecordTimer_Elapsed
;
mRecordTimer
.
Dispose
();
mRecordTimer
=
null
;
...
...
RunTime/DBRuntime/His/SeriseEnginer2.cs
浏览文件 @
814d25a8
...
...
@@ -194,6 +194,7 @@ namespace Cdy.Tag
/// </summary>
public
void
Start
()
{
LoggerService
.
Service
.
Info
(
"SeriseEnginer"
,
"start to Start"
);
mIsClosed
=
false
;
//Init();
resetEvent
=
new
ManualResetEvent
(
false
);
...
...
@@ -208,6 +209,7 @@ namespace Cdy.Tag
/// </summary>
public
void
Stop
()
{
LoggerService
.
Service
.
Info
(
"SeriseEnginer"
,
"start to stop"
);
mIsClosed
=
true
;
resetEvent
.
Set
();
closedEvent
.
WaitOne
();
...
...
RunTime/DBRuntime/RDDC/DataSync.cs
浏览文件 @
814d25a8
...
...
@@ -57,6 +57,11 @@ namespace DBRuntime.RDDC
}
/// <summary>
///
/// </summary>
public
bool
Enable
{
get
;
set
;
}
#
endregion
...
Properties
...
#
region
...
Methods
...
...
...
@@ -78,7 +83,7 @@ namespace DBRuntime.RDDC
{
while
(!
mIsStoped
)
{
if
(
mClient
.
IsConnected
)
if
(
mClient
.
IsConnected
&&
Enable
)
{
SyncData
();
Thread
.
Sleep
(
100
);
...
...
@@ -98,9 +103,15 @@ namespace DBRuntime.RDDC
try
{
var
realenginer
=
ServiceLocator
.
Locator
.
Resolve
<
IRealTagConsumer
>();
var
block
=
mClient
.
SyncRealData
();
var
size
=
block
.
ReadInt
();
Buffer
.
BlockCopy
(
block
.
Array
,
block
.
ArrayOffset
+
block
.
ReaderIndex
,
(
realenginer
as
RealEnginer
).
Memory
,
0
,
size
);
if
(
realenginer
!=
null
)
{
var
block
=
mClient
.
SyncRealData
();
if
(
block
!=
null
)
{
var
size
=
block
.
ReadInt
();
Buffer
.
BlockCopy
(
block
.
Array
,
block
.
ArrayOffset
+
block
.
ReaderIndex
,
(
realenginer
as
RealEnginer
).
Memory
,
0
,
size
);
}
}
}
catch
(
Exception
ex
)
{
...
...
RunTime/DBRuntime/RDDC/RDDCClient.cs
浏览文件 @
814d25a8
...
...
@@ -9,6 +9,7 @@
using
Cdy.Tag
;
using
DotNetty.Buffers
;
using
DotNetty.Common
;
using
System
;
using
System.Collections.Generic
;
using
System.Diagnostics
;
...
...
@@ -69,6 +70,8 @@ namespace DBRuntime.RDDC
private
IByteBuffer
mRealDataSyncData
;
private
object
mWorkStateLockObj
=
new
object
();
#
endregion
...
Variables
...
#
region
...
Events
...
...
...
@@ -153,21 +156,25 @@ namespace DBRuntime.RDDC
/// <returns></returns>
public
DateTime
?
GetStartTime
(
int
timeout
=
5000
)
{
var
mb
=
GetBuffer
(
WorkStateFun
,
1
);
mb
.
WriteByte
(
GetStartTimeFun
);
mWorkStateEvent
.
Reset
();
Send
(
mb
);
try
lock
(
mWorkStateLockObj
)
{
if
(
mWorkStateEvent
.
WaitOne
(
timeout
))
var
mb
=
GetBuffer
(
WorkStateFun
,
1
);
mb
.
WriteByte
(
GetStartTimeFun
);
mWorkStateEvent
.
Reset
();
Send
(
mb
);
try
{
return
DateTime
.
FromBinary
(
mWorkStateData
.
ReadLong
());
if
(
mWorkStateEvent
.
WaitOne
(
timeout
))
{
return
DateTime
.
FromBinary
(
mWorkStateData
.
ReadLong
());
}
}
}
finally
{
finally
{
}
}
return
null
;
}
...
...
@@ -178,20 +185,23 @@ namespace DBRuntime.RDDC
/// <returns></returns>
public
WorkState
?
GetWorkState
(
int
timeout
=
5000
)
{
var
mb
=
GetBuffer
(
WorkStateFun
,
1
);
mb
.
WriteByte
(
GetStateFun
);
mWorkStateEvent
.
Reset
();
Send
(
mb
);
try
lock
(
mWorkStateLockObj
)
{
if
(
mWorkStateEvent
.
WaitOne
(
timeout
))
var
mb
=
GetBuffer
(
WorkStateFun
,
1
);
mb
.
WriteByte
(
GetStateFun
);
mWorkStateEvent
.
Reset
();
Send
(
mb
);
try
{
return
(
WorkState
)
mWorkStateData
.
ReadByte
();
if
(
mWorkStateEvent
.
WaitOne
(
timeout
))
{
return
(
WorkState
)
mWorkStateData
.
ReadByte
();
}
}
}
finally
{
finally
{
}
}
return
null
;
}
...
...
@@ -203,20 +213,23 @@ namespace DBRuntime.RDDC
/// <returns></returns>
public
bool
?
SwitchToPrimary
(
int
timeout
=
5000
)
{
var
mb
=
GetBuffer
(
WorkStateFun
,
1
);
mb
.
WriteByte
(
ChangeToPrimaryFun
);
mWorkStateEvent
.
Reset
();
Send
(
mb
);
try
lock
(
mWorkStateLockObj
)
{
if
(
mWorkStateEvent
.
WaitOne
(
timeout
))
var
mb
=
GetBuffer
(
WorkStateFun
,
1
);
mb
.
WriteByte
(
ChangeToPrimaryFun
);
mWorkStateEvent
.
Reset
();
Send
(
mb
);
try
{
return
mWorkStateData
.
ReadByte
()>
0
;
if
(
mWorkStateEvent
.
WaitOne
(
timeout
))
{
return
mWorkStateData
.
ReadByte
()
>
0
;
}
}
}
finally
{
finally
{
}
}
return
false
;
}
...
...
@@ -229,20 +242,23 @@ namespace DBRuntime.RDDC
/// <returns></returns>
public
bool
?
SwitchToStandby
(
int
timeout
=
5000
)
{
var
mb
=
GetBuffer
(
WorkStateFun
,
1
);
mb
.
WriteByte
(
ChangeToStandbyFun
);
mWorkStateEvent
.
Reset
();
Send
(
mb
);
try
lock
(
mWorkStateLockObj
)
{
if
(
mWorkStateEvent
.
WaitOne
(
timeout
))
var
mb
=
GetBuffer
(
WorkStateFun
,
1
);
mb
.
WriteByte
(
ChangeToStandbyFun
);
mWorkStateEvent
.
Reset
();
Send
(
mb
);
try
{
return
mWorkStateData
.
ReadByte
()
>
0
;
if
(
mWorkStateEvent
.
WaitOne
(
timeout
))
{
return
mWorkStateData
.
ReadByte
()
>
0
;
}
}
}
finally
{
finally
{
}
}
return
false
;
}
...
...
RunTime/DBRuntime/RDDC/RDDCManager.cs
浏览文件 @
814d25a8
...
...
@@ -37,6 +37,12 @@ namespace DBRuntime
private
object
mLockObj
=
new
object
();
private
WorkState
mCurrentState
=
WorkState
.
Unknow
;
private
bool
mIsClosed
=
false
;
private
Thread
mScanThread
;
#
endregion
...
Variables
...
#
region
...
Events
...
...
...
@@ -45,6 +51,9 @@ namespace DBRuntime
#
region
...
Constructor
...
/// <summary>
///
/// </summary>
public
RDDCManager
()
{
...
...
@@ -62,7 +71,25 @@ namespace DBRuntime
/// <summary>
/// 当前状态
/// </summary>
public
WorkState
CurrentState
{
get
;
set
;
}
=
WorkState
.
Unknow
;
public
WorkState
CurrentState
{
get
{
return
mCurrentState
;
}
set
{
mCurrentState
=
value
;
if
(
mSync
!=
null
)
{
if
(
value
==
WorkState
.
Standby
)
{
mSync
.
Enable
=
true
;
}
else
{
mSync
.
Enable
=
false
;
}
}
}
}
/// <summary>
///
...
...
@@ -122,6 +149,11 @@ namespace DBRuntime
mSync
=
new
DataSync
()
{
Client
=
mClient
};
mSync
.
Start
();
//mScanThread = new Thread(ThreadPro);
//mScanThread.IsBackground = true;
//mScanThread.Start();
CheckWorkState
();
}
else
...
...
@@ -150,12 +182,30 @@ namespace DBRuntime
/// </summary>
public
void
Stop
()
{
mIsClosed
=
true
;
mSync
.
Stop
();
mServer
.
Stop
();
mClient
.
PropertyChanged
-=
MClient_PropertyChanged
;
mClient
.
Close
();
}
private
void
ThreadPro
()
{
while
(!
mIsClosed
)
{
if
(
mClient
.
NeedReConnected
)
{
mClient
.
Connect
(
RemoteIp
,
Port
);
Thread
.
Sleep
(
500
);
}
else
{
Thread
.
Sleep
(
1000
);
}
}
}
/// <summary>
///
/// </summary>
...
...
@@ -164,7 +214,9 @@ namespace DBRuntime
if
(!
mClient
.
IsConnected
)
{
if
(
CurrentState
!=
WorkState
.
Primary
)
SwitchTo
(
WorkState
.
Primary
);
{
SwitchTo
(
WorkState
.
Primary
);
}
}
else
{
...
...
@@ -207,6 +259,9 @@ namespace DBRuntime
CurrentState
=
WorkState
.
Standby
;
}
}
LoggerService
.
Service
.
Info
(
"RDDCManager"
,
"running in "
+
CurrentState
.
ToString
(),
ConsoleColor
.
Cyan
);
}
/// <summary>
...
...
@@ -219,7 +274,7 @@ namespace DBRuntime
{
if
(
state
==
WorkState
.
Standby
)
{
if
(
mClient
.
SwitchToPrimary
().
Value
)
if
(
mClient
.
SwitchToPrimary
(
60000
).
Value
)
{
return
SwitchTo
(
WorkState
.
Standby
);
}
...
...
@@ -230,7 +285,7 @@ namespace DBRuntime
}
else
{
if
(
mClient
.
SwitchToStandby
().
Value
)
if
(
mClient
.
SwitchToStandby
(
60000
).
Value
)
{
return
SwitchTo
(
WorkState
.
Primary
);
}
...
...
@@ -261,6 +316,7 @@ namespace DBRuntime
/// <returns></returns>
public
bool
SwitchTo
(
WorkState
state
)
{
if
(
CurrentState
==
WorkState
.
Switching
)
return
true
;
lock
(
mLockObj
)
{
var
olds
=
CurrentState
;
...
...
RunTime/DBRuntime/RDDC/WorStateServerProcess.cs
浏览文件 @
814d25a8
...
...
@@ -7,6 +7,7 @@
// 种道洋
//==============================================================
using
Cdy.Tag
;
using
DBRuntime.Api
;
using
DotNetty.Buffers
;
using
System
;
...
...
@@ -74,19 +75,21 @@ namespace DBRuntime.RDDC
break
;
case
ChangeToPrimary
:
var
re
=
ProcessSwichToPrimary
();
Parent
.
AsyncCallback
(
client
,
ToByteBuffer
(
GetStartTime
,
re
?
1
:
0
));
byte
bval
=
re
?
(
byte
)
1
:
(
byte
)
0
;
Parent
.
AsyncCallback
(
client
,
ToByteBuffer
(
FunId
,
bval
));
break
;
case
ChangeToStandby
:
re
=
ProcessSwichToStandby
();
Parent
.
AsyncCallback
(
client
,
ToByteBuffer
(
GetStartTime
,
re
?
1
:
0
));
bval
=
re
?
(
byte
)
1
:
(
byte
)
0
;
Parent
.
AsyncCallback
(
client
,
ToByteBuffer
(
FunId
,
bval
));
break
;
case
GetState
:
var
state
=
(
byte
)
RDDCManager
.
Manager
.
CurrentState
;
Parent
.
AsyncCallback
(
client
,
ToByteBuffer
(
GetStartTime
,
state
));
Parent
.
AsyncCallback
(
client
,
ToByteBuffer
(
FunId
,
state
));
break
;
}
base
.
ProcessSingleData
(
client
,
data
);
//
base.ProcessSingleData(client, data);
}
/// <summary>
...
...
@@ -103,7 +106,15 @@ namespace DBRuntime.RDDC
/// <returns></returns>
private
bool
ProcessSwichToPrimary
()
{
return
RDDCManager
.
Manager
.
SwitchTo
(
Cdy
.
Tag
.
WorkState
.
Primary
);
try
{
LoggerService
.
Service
.
Info
(
"WorkStateServer"
,
"Receive remote call to switch to primary,Start to switch!"
,
ConsoleColor
.
Yellow
);
return
RDDCManager
.
Manager
.
SwitchTo
(
Cdy
.
Tag
.
WorkState
.
Primary
);
}
finally
{
LoggerService
.
Service
.
Info
(
"WorkStateServer"
,
"Completely to switch"
,
ConsoleColor
.
Yellow
);
}
}
/// <summary>
...
...
@@ -112,7 +123,15 @@ namespace DBRuntime.RDDC
/// <returns></returns>
private
bool
ProcessSwichToStandby
()
{
return
RDDCManager
.
Manager
.
SwitchTo
(
Cdy
.
Tag
.
WorkState
.
Standby
);
try
{
LoggerService
.
Service
.
Info
(
"WorkStateServer"
,
"Receive remote call to switch to standby!"
,
ConsoleColor
.
Yellow
);
return
RDDCManager
.
Manager
.
SwitchTo
(
Cdy
.
Tag
.
WorkState
.
Standby
);
}
finally
{
LoggerService
.
Service
.
Info
(
"WorkStateServer"
,
"Completely to switch"
,
ConsoleColor
.
Yellow
);
}
}
#
endregion
...
Methods
...
...
...
RunTime/DBRuntime/Runner.cs
浏览文件 @
814d25a8
...
...
@@ -86,14 +86,30 @@ namespace Cdy.Tag
{
RDDCManager
.
Manager
.
SwitchWorkStateAction
=
new
Func
<
WorkState
,
bool
>((
state
)
=>
{
if
(
state
==
WorkState
.
Primary
)
if
(
mIsStarted
)
{
return
SwitchToPrimary
();
if
(
state
==
WorkState
.
Primary
)
{
return
SwitchToPrimary
();
}
else
{
return
SwitchToStandby
();
}
}
else
{
return
SwitchToStandby
();
while
(!
mIsStarted
)
System
.
Threading
.
Thread
.
Sleep
(
100
);
if
(
state
==
WorkState
.
Primary
)
{
return
SwitchToPrimary
();
}
else
{
return
SwitchToStandby
();
}
}
});
}
...
...
@@ -184,8 +200,6 @@ namespace Cdy.Tag
CurrentDatabase
=
mRealDatabase
.
Name
;
CurrentDatabaseLastUpdateTime
=
mRealDatabase
.
UpdateTime
;
RDDCManager
.
Manager
.
Load
(
mDatabaseName
);
sw
.
Stop
();
LoggerService
.
Service
.
Info
(
"LoadDatabase"
,
"load "
+
mDatabaseName
+
" take "
+
sw
.
ElapsedMilliseconds
.
ToString
()
+
" ms"
);
}
...
...
@@ -362,6 +376,8 @@ namespace Cdy.Tag
LoggerService
.
Service
.
EnableLogger
=
true
;
LoggerService
.
Service
.
Info
(
"Runner"
,
" 数据库 "
+
database
+
" 开始启动"
);
RDDCManager
.
Manager
.
Load
(
database
);
RDDCManager
.
Manager
.
Start
();
var
re
=
await
InitAsync
(
database
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录