Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
model-entity
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
rust common
model-entity
Commits
eb4c9e5f
Commit
eb4c9e5f
authored
Dec 06, 2024
by
xuwencheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
upgrade
parent
b17996b1
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
76 additions
and
101 deletions
+76
-101
socket.rs
src/event/socket.rs
+18
-6
event.rs
src/socket/event.rs
+58
-95
No files found.
src/event/socket.rs
View file @
eb4c9e5f
use
serde
::{
Deserialize
,
Serialize
};
use
serde_repr
::{
Deserialize_repr
,
Serialize_repr
};
use
crate
::
event
::
Status
;
#[derive(Debug,
Deserialize_repr,
Serialize_repr,
Eq,
PartialEq,
Clone,
Hash)]
#[repr(u8)]
pub
enum
EventType
{
//
业务推送事件
BusinessEvent
=
0
,
//
pos推送客户端消息入口
ReceivePush
=
0
,
// 推送事件
Publish
Event
=
10
,
Publish
=
10
,
// 连接事件
ConnectEvent
=
20
,
CleanSessionEvent
=
23
,
Connect
=
20
,
// 消费事件
ConsumeEvent
=
30
,
Consume
=
30
,
Clean
=
31
,
}
#[derive(Debug,
Clone,
Deserialize,
Serialize,
Default)]
...
...
@@ -46,3 +48,13 @@ pub struct SocketEvent {
// 扩展信息
pub
extra
:
Option
<
String
>
,
}
impl
SocketEvent
{
pub
fn
new
(
desc
:
impl
AsRef
<
str
>
,
ty
:
EventType
,
status
:
Status
)
->
Self
{
let
mut
event
=
SocketEvent
::
default
();
event
.event
=
desc
.as_ref
()
.to_string
();
event
.event_ty
=
ty
as
i32
;
event
.status
=
status
as
i32
;
event
}
}
src/socket/event.rs
View file @
eb4c9e5f
...
...
@@ -25,21 +25,14 @@ impl BusinessEvent for SocketEvent {
extra
:
impl
AsRef
<
str
>
,
)
->
SocketEvent
{
let
Header
(
msg_id
,
msg_ty
,
qos
)
=
header
;
SocketEvent
{
device_id
:
None
,
client_type
:
None
,
version
:
None
,
version_desc
:
None
,
event
:
"业务推送事件"
.to_string
(),
event_ty
:
EventType
::
BusinessEvent
as
i32
,
key
:
key
.map
(|
v
|
v
.as_ref
()
.to_string
()),
qos
:
Some
(
qos
as
i32
),
msg_id
:
Some
(
msg_id
),
msg_ty
:
Some
(
msg_ty
),
status
:
status
as
i32
,
desc
:
qos
.desc
(),
extra
:
Some
(
extra
.as_ref
()
.to_string
()),
}
let
mut
event
=
SocketEvent
::
new
(
"业务推送事件"
,
EventType
::
ReceivePush
,
status
);
event
.key
=
key
.map
(|
v
|
v
.as_ref
()
.to_string
());
event
.qos
=
Some
(
qos
as
i32
);
event
.msg_id
=
Some
(
msg_id
);
event
.msg_ty
=
Some
(
msg_ty
);
event
.desc
=
qos
.desc
();
event
.extra
=
Some
(
extra
.as_ref
()
.to_string
());
event
}
}
...
...
@@ -58,46 +51,32 @@ impl PublishEvent for SocketEvent {
desc
:
impl
AsRef
<
str
>
,
)
->
SocketEvent
{
let
Header
(
msg_id
,
msg_ty
,
qos
)
=
header
;
SocketEvent
{
device_id
:
Some
(
info
.device_id
.clone
()),
client_type
:
Some
(
info
.client_type
),
version
:
Some
(
info
.version
),
version_desc
:
info
.version_desc
.clone
(),
event
:
"推送事件"
.to_string
(),
event_ty
:
EventType
::
PublishEvent
as
i32
,
key
:
None
,
qos
:
Some
(
qos
as
i32
),
msg_id
:
Some
(
msg_id
),
msg_ty
:
Some
(
msg_ty
),
status
:
status
as
i32
,
desc
:
desc
.as_ref
()
.to_string
(),
extra
:
None
,
}
let
mut
event
=
SocketEvent
::
new
(
"推送事件"
,
EventType
::
Publish
,
status
);
event
.device_id
=
Some
(
info
.device_id
.clone
());
event
.client_type
=
Some
(
info
.client_type
);
event
.version
=
Some
(
info
.version
);
event
.version_desc
=
info
.version_desc
.clone
();
event
.qos
=
Some
(
qos
as
i32
);
event
.msg_id
=
Some
(
msg_id
);
event
.msg_ty
=
Some
(
msg_ty
);
event
.desc
=
desc
.as_ref
()
.to_string
();
event
}
fn
ack
(
info
:
&
TokenInfo
,
msg_id
:
i64
,
desc
:
impl
AsRef
<
str
>
)
->
SocketEvent
{
SocketEvent
{
device_id
:
Some
(
info
.device_id
.clone
()),
client_type
:
Some
(
info
.client_type
),
version
:
Some
(
info
.version
),
version_desc
:
info
.version_desc
.clone
(),
event
:
"推送事件"
.to_string
(),
event_ty
:
EventType
::
PublishEvent
as
i32
,
key
:
None
,
qos
:
None
,
msg_id
:
Some
(
msg_id
),
msg_ty
:
None
,
status
:
Status
::
Success
as
i32
,
desc
:
desc
.as_ref
()
.to_string
(),
extra
:
None
,
}
let
mut
event
=
SocketEvent
::
new
(
"推送事件"
,
EventType
::
Publish
,
Status
::
Success
);
event
.device_id
=
Some
(
info
.device_id
.clone
());
event
.client_type
=
Some
(
info
.client_type
);
event
.version
=
Some
(
info
.version
);
event
.version_desc
=
info
.version_desc
.clone
();
event
.msg_id
=
Some
(
msg_id
);
event
.desc
=
desc
.as_ref
()
.to_string
();
event
}
}
pub
trait
ConnectEvent
{
fn
connect
(
info
:
&
TokenInfo
,
status
:
Status
,
extra
:
Option
<
impl
AsRef
<
str
>>
)
->
SocketEvent
;
fn
clean_session
(
info
:
&
TokenInfo
,
extra
:
impl
AsRef
<
str
>
)
->
SocketEvent
;
}
impl
ConnectEvent
for
SocketEvent
{
...
...
@@ -107,39 +86,14 @@ impl ConnectEvent for SocketEvent {
}
else
{
"设备断开连接"
};
SocketEvent
{
device_id
:
Some
(
info
.device_id
.clone
()),
client_type
:
Some
(
info
.client_type
),
version
:
Some
(
info
.version
),
version_desc
:
info
.version_desc
.clone
(),
event
:
"连接事件"
.to_string
(),
event_ty
:
EventType
::
ConnectEvent
as
i32
,
key
:
None
,
qos
:
None
,
msg_id
:
None
,
msg_ty
:
None
,
status
:
status
as
i32
,
desc
:
desc
.to_string
(),
extra
:
extra
.map
(|
s
|
s
.as_ref
()
.to_string
()),
}
}
fn
clean_session
(
info
:
&
TokenInfo
,
extra
:
impl
AsRef
<
str
>
)
->
SocketEvent
{
SocketEvent
{
device_id
:
Some
(
info
.device_id
.clone
()),
client_type
:
Some
(
info
.client_type
),
version
:
Some
(
info
.version
),
version_desc
:
info
.version_desc
.clone
(),
event
:
"连接事件"
.to_string
(),
event_ty
:
EventType
::
CleanSessionEvent
as
i32
,
key
:
None
,
qos
:
None
,
msg_id
:
None
,
msg_ty
:
None
,
status
:
Status
::
Fail
as
i32
,
desc
:
"清理历史消息"
.to_string
(),
extra
:
Some
(
extra
.as_ref
()
.to_string
()),
}
let
mut
event
=
SocketEvent
::
new
(
"连接事件"
,
EventType
::
Connect
,
status
);
event
.device_id
=
Some
(
info
.device_id
.clone
());
event
.client_type
=
Some
(
info
.client_type
);
event
.version
=
Some
(
info
.version
);
event
.version_desc
=
info
.version_desc
.clone
();
event
.desc
=
desc
.to_string
();
event
.extra
=
extra
.map
(|
s
|
s
.as_ref
()
.to_string
());
event
}
}
...
...
@@ -150,6 +104,8 @@ pub trait ConsumeEvent {
status
:
Status
,
extra
:
Option
<
impl
AsRef
<
str
>>
,
)
->
SocketEvent
;
fn
clean_session
(
info
:
&
TokenInfo
,
extra
:
impl
AsRef
<
str
>
)
->
SocketEvent
;
}
impl
ConsumeEvent
for
SocketEvent
{
...
...
@@ -165,20 +121,27 @@ impl ConsumeEvent for SocketEvent {
"消息消费失败"
};
let
Header
(
msg_id
,
msg_ty
,
qos
)
=
header
;
SocketEvent
{
device_id
:
Some
(
info
.device_id
.clone
()),
client_type
:
Some
(
info
.client_type
),
version
:
Some
(
info
.version
),
version_desc
:
info
.version_desc
.clone
(),
event
:
"消费事件"
.to_string
(),
event_ty
:
EventType
::
ConsumeEvent
as
i32
,
key
:
None
,
qos
:
Some
(
qos
as
i32
),
msg_id
:
Some
(
msg_id
),
msg_ty
:
Some
(
msg_ty
),
status
:
status
as
i32
,
desc
:
desc
.to_string
(),
extra
:
extra
.map
(|
s
|
s
.as_ref
()
.to_string
()),
}
let
mut
event
=
SocketEvent
::
new
(
"消费事件"
,
EventType
::
Consume
,
Status
::
Fail
);
event
.device_id
=
Some
(
info
.device_id
.clone
());
event
.client_type
=
Some
(
info
.client_type
);
event
.version
=
Some
(
info
.version
);
event
.version_desc
=
info
.version_desc
.clone
();
event
.qos
=
Some
(
qos
as
i32
);
event
.msg_id
=
Some
(
msg_id
);
event
.msg_ty
=
Some
(
msg_ty
);
event
.desc
=
desc
.to_string
();
event
.extra
=
extra
.map
(|
s
|
s
.as_ref
()
.to_string
());
event
}
fn
clean_session
(
info
:
&
TokenInfo
,
extra
:
impl
AsRef
<
str
>
)
->
SocketEvent
{
let
mut
event
=
SocketEvent
::
new
(
"消费事件"
,
EventType
::
Clean
,
Status
::
Fail
);
event
.device_id
=
Some
(
info
.device_id
.clone
());
event
.client_type
=
Some
(
info
.client_type
);
event
.version
=
Some
(
info
.version
);
event
.version_desc
=
info
.version_desc
.clone
();
event
.desc
=
"清理历史消息"
.to_string
();
event
.extra
=
Some
(
extra
.as_ref
()
.to_string
());
event
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment