[ Devnet ▾ ]

Track

9KnotGYNAox3mhyV59nnQ4e61JnjdR5iWnhgvDK4y3LT
This track's sequential ID.
Number
#2
Size of the stored blob.
Size
677 B
Epoch the track became active.
Active Epoch
138
Epoch after which the track expires.
Expiry Epoch
178
in 1 day
URLhttps://gw.tape.network/track/9KnotGYNAox3mhyV59nnQ4e61JnjdR5iWnhgvDK4y3LT
Tape9W8LW...mbFes
Owner7WZP8...YNwnj
Content KeyARmkj...zZ9Jb
StatusReady
TypeUser
Filenameobj-1059-3353.go
Content-Typetext/plain
EncodingInline
Size677 B
Spool Group9
Value Hash
5QBGxWo9sAfWrZLUhqWj7Vf3ANJCy3WdJ3DUM4i7kP1Q
Content
00000000  70 61 63 6b 61 67 65 20  63 6f 75 6e 74 65 72 0a |package counter.|
00000010  0a 69 6d 70 6f 72 74 20  22 73 79 6e 63 22 0a 0a |.import "sync"..|
00000020  2f 2f 20 43 6f 75 6e 74  65 72 20 69 73 20 61 20 |// Counter is a |
00000030  67 6f 72 6f 75 74 69 6e  65 2d 73 61 66 65 20 69 |goroutine-safe i|
00000040  6e 74 65 67 65 72 20 63  6f 75 6e 74 65 72 2e 0a |nteger counter..|
00000050  74 79 70 65 20 43 6f 75  6e 74 65 72 20 73 74 72 |type Counter str|
00000060  75 63 74 20 7b 0a 09 6d  75 20 20 20 20 73 79 6e |uct {..mu    syn|
00000070  63 2e 4d 75 74 65 78 0a  09 76 61 6c 75 65 20 69 |c.Mutex..value i|
00000080  6e 74 36 34 0a 7d 0a 0a  2f 2f 20 4e 65 77 20 72 |nt64.}..// New r|
00000090  65 74 75 72 6e 73 20 61  20 63 6f 75 6e 74 65 72 |eturns a counter|
000000a0  20 69 6e 69 74 69 61 6c  69 7a 65 64 20 74 6f 20 | initialized to |
000000b0  69 6e 69 74 69 61 6c 2e  0a 66 75 6e 63 20 4e 65 |initial..func Ne|
000000c0  77 28 69 6e 69 74 69 61  6c 20 69 6e 74 36 34 29 |w(initial int64)|
000000d0  20 2a 43 6f 75 6e 74 65  72 20 7b 0a 09 72 65 74 | *Counter {..ret|
000000e0  75 72 6e 20 26 43 6f 75  6e 74 65 72 7b 76 61 6c |urn &Counter{val|
000000f0  75 65 3a 20 69 6e 69 74  69 61 6c 7d 0a 7d 0a 0a |ue: initial}.}..|
00000100  2f 2f 20 49 6e 63 20 69  6e 63 72 65 6d 65 6e 74 |// Inc increment|
00000110  73 20 74 68 65 20 63 6f  75 6e 74 65 72 20 62 79 |s the counter by|
00000120  20 6f 6e 65 20 61 6e 64  20 72 65 74 75 72 6e 73 | one and returns|
00000130  20 74 68 65 20 6e 65 77  20 76 61 6c 75 65 2e 0a | the new value..|
00000140  66 75 6e 63 20 28 63 20  2a 43 6f 75 6e 74 65 72 |func (c *Counter|
00000150  29 20 49 6e 63 28 29 20  69 6e 74 36 34 20 7b 0a |) Inc() int64 {.|
00000160  09 72 65 74 75 72 6e 20  63 2e 41 64 64 28 31 29 |.return c.Add(1)|
00000170  0a 7d 0a 0a 2f 2f 20 41  64 64 20 61 64 64 73 20 |.}..// Add adds |
00000180  64 65 6c 74 61 20 74 6f  20 74 68 65 20 63 6f 75 |delta to the cou|
00000190  6e 74 65 72 20 61 6e 64  20 72 65 74 75 72 6e 73 |nter and returns|
000001a0  20 74 68 65 20 6e 65 77  20 76 61 6c 75 65 2e 0a | the new value..|
000001b0  66 75 6e 63 20 28 63 20  2a 43 6f 75 6e 74 65 72 |func (c *Counter|
000001c0  29 20 41 64 64 28 64 65  6c 74 61 20 69 6e 74 36 |) Add(delta int6|
000001d0  34 29 20 69 6e 74 36 34  20 7b 0a 09 63 2e 6d 75 |4) int64 {..c.mu|
000001e0  2e 4c 6f 63 6b 28 29 0a  09 64 65 66 65 72 20 63 |.Lock()..defer c|
000001f0  2e 6d 75 2e 55 6e 6c 6f  63 6b 28 29 0a 0a 09 63 |.mu.Unlock()...c|
00000200  2e 76 61 6c 75 65 20 2b  3d 20 64 65 6c 74 61 0a |.value += delta.|
00000210  09 72 65 74 75 72 6e 20  63 2e 76 61 6c 75 65 0a |.return c.value.|
00000220  7d 0a 0a 2f 2f 20 56 61  6c 75 65 20 72 65 74 75 |}..// Value retu|
00000230  72 6e 73 20 74 68 65 20  63 75 72 72 65 6e 74 20 |rns the current |
00000240  63 6f 75 6e 74 65 72 20  76 61 6c 75 65 2e 0a 66 |counter value..f|
00000250  75 6e 63 20 28 63 20 2a  43 6f 75 6e 74 65 72 29 |unc (c *Counter)|
00000260  20 56 61 6c 75 65 28 29  20 69 6e 74 36 34 20 7b | Value() int64 {|
00000270  0a 09 63 2e 6d 75 2e 4c  6f 63 6b 28 29 0a 09 64 |..c.mu.Lock()..d|
00000280  65 66 65 72 20 63 2e 6d  75 2e 55 6e 6c 6f 63 6b |efer c.mu.Unlock|
00000290  28 29 0a 0a 09 72 65 74  75 72 6e 20 63 2e 76 61 |()...return c.va|
000002a0  6c 75 65 0a 7d                                   |lue.}|