@@ -7,6 +7,12 @@ import (
77 "sync"
88)
99
10+ var (
11+ _ Service = & UnimplementedHandler {}
12+ _ Namespace = & namespace {}
13+ _ sort.Interface = & unitSorter {}
14+ )
15+
1016type (
1117 ServiceType int32
1218 Restart int32
@@ -91,21 +97,28 @@ const (
9197func (h UnimplementedHandler ) mustEmbedUnimplemented () {}
9298func (h UnimplementedHandler ) Name () string { return "unimplemented" }
9399func (h UnimplementedHandler ) Type () ServiceType { return ServiceTypeIgnore }
94- func (h UnimplementedHandler ) OnInstall () error { panic ( "Unimplemented OnInstall" ) }
95- func (h UnimplementedHandler ) OnStart () error { panic ( "Unimplemented OnStart" ) }
96- func (h UnimplementedHandler ) OnStop () error { panic ( "Unimplemented OnStop" ) }
100+ func (h UnimplementedHandler ) OnInstall () error { return errors . New ( "unimplemented OnInstall" ) }
101+ func (h UnimplementedHandler ) OnStart () error { return errors . New ( "unimplemented OnStart" ) }
102+ func (h UnimplementedHandler ) OnStop () error { return errors . New ( "unimplemented OnStop" ) }
97103
98104func (n * namespace ) Name () string { return n .name }
99- func (n * namespace ) Set (key string , value any ) {
105+
106+ func (n * namespace ) setValueWithLock (action func ()) {
100107 n .rw .Lock ()
101108 defer n .rw .Unlock ()
102- n .values [key ] = value
109+ action ()
110+ }
111+
112+ func (n * namespace ) Set (key string , value any ) {
113+ n .setValueWithLock (func () {
114+ n .values [key ] = value
115+ })
103116}
104117
105118func (n * namespace ) Del (key string ) {
106- n .rw . Lock ()
107- defer n . rw . Unlock ( )
108- delete ( n . values , key )
119+ n .setValueWithLock ( func () {
120+ delete ( n . values , key )
121+ } )
109122}
110123
111124func (n * namespace ) Get (key string ) (any , bool ) {
@@ -134,22 +147,21 @@ func newNamespace(name string) Namespace {
134147 }
135148 return & namespace {
136149 name : name ,
137- values : make (map [string ]any ),
150+ values : make (map [string ]any , 16 ),
138151 services : make ([]Service , 0 , 8 ),
139152 EnvManager : env ,
140153 }
141154}
142155
143156func (s unitSorter ) Len () int { return len (s .units ) }
144157func (s unitSorter ) Less (i , j int ) bool {
145- if s .desc {
146- return s .units [i ].Index > s .units [j ].Index
147- }
148- return s .units [i ].Index < s .units [j ].Index
158+ return (s .units [i ].Index > s .units [j ].Index ) == s .desc
149159}
150160
151161func (s unitSorter ) Swap (i , j int ) {
152162 s .units [i ], s .units [j ] = s .units [j ], s .units [i ]
153163}
154164
155- func (u Units ) Sort (desc bool ) { sort .Sort (unitSorter {units : u , desc : desc }) }
165+ func (u Units ) Sort (desc bool ) {
166+ sort .Sort (unitSorter {units : u , desc : desc })
167+ }
0 commit comments