@@ -15,21 +15,21 @@ import (
15
15
// The confirmation status is updated when the confirmation is received from the broker (see server_frame.go)
16
16
// or due of timeout. The Timeout is configurable, and it is calculated client side.
17
17
type unConfirmed struct {
18
- messages map [int64 ]* ConfirmationStatus
19
- tmp []* ConfirmationStatus
20
- tmpMutex sync.Mutex
21
- mutex sync.RWMutex
18
+ messages map [int64 ]* ConfirmationStatus
19
+ tmp []* ConfirmationStatus
20
+ tmpMutex sync.Mutex
21
+ mutexMessageMap sync.RWMutex
22
22
}
23
23
24
24
const DefaultUnconfirmedSize = 10_000
25
25
26
26
func newUnConfirmed () * unConfirmed {
27
27
28
28
r := & unConfirmed {
29
- messages : make (map [int64 ]* ConfirmationStatus , DefaultUnconfirmedSize ),
30
- tmp : []* ConfirmationStatus {},
31
- tmpMutex : sync.Mutex {},
32
- mutex : sync.RWMutex {},
29
+ messages : make (map [int64 ]* ConfirmationStatus , DefaultUnconfirmedSize ),
30
+ tmp : []* ConfirmationStatus {},
31
+ tmpMutex : sync.Mutex {},
32
+ mutexMessageMap : sync.RWMutex {},
33
33
}
34
34
35
35
return r
@@ -39,7 +39,6 @@ func (u *unConfirmed) addFromSequence(message *messageSequence, source *message.
39
39
40
40
u .tmpMutex .Lock ()
41
41
u .tmp = append (u .tmp , & ConfirmationStatus {
42
- //u.messages[message.publishingId] = &ConfirmationStatus{
43
42
inserted : time .Now (),
44
43
message : * source ,
45
44
producerID : producerID ,
@@ -50,19 +49,19 @@ func (u *unConfirmed) addFromSequence(message *messageSequence, source *message.
50
49
}
51
50
52
51
func (u * unConfirmed ) link (from int64 , to int64 ) {
53
- u .mutex .Lock ()
54
- defer u .mutex .Unlock ()
52
+ u .mutexMessageMap .Lock ()
53
+ defer u .mutexMessageMap .Unlock ()
55
54
r := u .messages [from ]
56
55
if r != nil {
57
56
r .linkedTo = append (r .linkedTo , u .messages [to ])
58
57
}
59
58
}
60
59
61
60
func (u * unConfirmed ) extractWithConfirms (ids []int64 ) []* ConfirmationStatus {
62
- u .mutex .Lock ()
63
- defer u .mutex .Unlock ()
61
+ u .mutexMessageMap .Lock ()
62
+ defer u .mutexMessageMap .Unlock ()
64
63
var res []* ConfirmationStatus
65
- u .fromTmpToMap ()
64
+ u .fromTmpToMap () ///
66
65
67
66
for _ , v := range ids {
68
67
m := u .extract (v , 0 , true )
@@ -87,8 +86,8 @@ func (u *unConfirmed) fromTmpToMap() {
87
86
}
88
87
89
88
func (u * unConfirmed ) extractWithError (id int64 , errorCode uint16 ) * ConfirmationStatus {
90
- u .mutex .Lock ()
91
- defer u .mutex .Unlock ()
89
+ u .mutexMessageMap .Lock ()
90
+ defer u .mutexMessageMap .Unlock ()
92
91
u .fromTmpToMap ()
93
92
return u .extract (id , errorCode , false )
94
93
}
@@ -117,8 +116,8 @@ func (u *unConfirmed) updateStatus(rootMessage *ConfirmationStatus, errorCode ui
117
116
}
118
117
119
118
func (u * unConfirmed ) extractWithTimeOut (timeout time.Duration ) []* ConfirmationStatus {
120
- u .mutex .Lock ()
121
- defer u .mutex .Unlock ()
119
+ u .mutexMessageMap .Lock ()
120
+ defer u .mutexMessageMap .Unlock ()
122
121
u .fromTmpToMap ()
123
122
var res []* ConfirmationStatus
124
123
for _ , v := range u .messages {
@@ -131,15 +130,15 @@ func (u *unConfirmed) extractWithTimeOut(timeout time.Duration) []*ConfirmationS
131
130
}
132
131
133
132
func (u * unConfirmed ) size () int {
134
- u .mutex .Lock ()
135
- defer u .mutex .Unlock ()
133
+ u .mutexMessageMap .Lock ()
134
+ defer u .mutexMessageMap .Unlock ()
136
135
u .fromTmpToMap ()
137
136
return len (u .messages )
138
137
}
139
138
140
139
func (u * unConfirmed ) getAll () map [int64 ]* ConfirmationStatus {
141
- u .mutex .Lock ()
142
- defer u .mutex .Unlock ()
140
+ u .mutexMessageMap .Lock ()
141
+ defer u .mutexMessageMap .Unlock ()
143
142
u .fromTmpToMap ()
144
143
return u .messages
145
144
}
0 commit comments