1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.jmx;
18
19 import javax.management.ObjectName;
20
21 import com.lmax.disruptor.RingBuffer;
22
23
24
25
26 public class RingBufferAdmin implements RingBufferAdminMBean {
27
28 private final RingBuffer<?> ringBuffer;
29 private final ObjectName objectName;
30
31 public static RingBufferAdmin forAsyncLogger(final RingBuffer<?> ringBuffer, final String contextName) {
32 final String ctxName = Server.escape(contextName);
33 final String name = String.format(PATTERN_ASYNC_LOGGER, ctxName);
34 return new RingBufferAdmin(ringBuffer, name);
35 }
36
37 public static RingBufferAdmin forAsyncLoggerConfig(final RingBuffer<?> ringBuffer,
38 final String contextName, final String configName) {
39 final String ctxName = Server.escape(contextName);
40 final String cfgName = Server.escape(configName);
41 final String name = String.format(PATTERN_ASYNC_LOGGER_CONFIG, ctxName, cfgName);
42 return new RingBufferAdmin(ringBuffer, name);
43 }
44
45 protected RingBufferAdmin(final RingBuffer<?> ringBuffer, final String mbeanName) {
46 this.ringBuffer = ringBuffer;
47 try {
48 objectName = new ObjectName(mbeanName);
49 } catch (final Exception e) {
50 throw new IllegalStateException(e);
51 }
52 }
53
54 @Override
55 public long getBufferSize() {
56 return ringBuffer == null ? 0 : ringBuffer.getBufferSize();
57 }
58
59 @Override
60 public long getRemainingCapacity() {
61 return ringBuffer == null ? 0 : ringBuffer.remainingCapacity();
62 }
63
64
65
66
67
68
69
70
71 public ObjectName getObjectName() {
72 return objectName;
73 }
74
75 }