/**
* Tencent is pleased to support the open source community by making MSEC available.
*
* Copyright (C) 2016 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the GNU General Public License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may
* obtain a copy of the License at
*
* https://opensource.org/licenses/GPL-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package api.monitor.msec.org;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
/**
* Created by Administrator on 2016/5/19.
*/
public class AccessMonitor {
static
{
if (System.getProperties().getProperty("os.name").toUpperCase().indexOf("WINDOWS") < 0) {
try {
InputStream in = AccessMonitor.class.getClass().getResourceAsStream("/sofiles/libjni_monitor.so");
File f = File.createTempFile("libjni_monitor", ".so");
OutputStream out = new FileOutputStream(f);
byte[] buf = new byte[10240];
while (true) {
int len = in.read(buf);
if (len <= 0) {
break;
}
out.write(buf, 0, len);
}
in.close();
out.close();
System.load(f.getAbsolutePath());
f.delete();
} catch (Exception e) {
e.printStackTrace();
}
}
}
private AccessMonitor() {}
private static AccessMonitor s_instance = new AccessMonitor();
public static AccessMonitor getInstance() { return s_instance; }
//Native methods:
public native boolean init(String fileName);
public native boolean add(String serviceName, String attrName, int value);
public native boolean set(String serviceName, String attrName, int value);
public static boolean initialize(String filename) {
return s_instance.init(filename);
}
protected String serviceName;
public static void initServiceName(String serviceName) {
s_instance.serviceName = serviceName;
}
//Simplified methods:
public static boolean add(String attrName, int value) {
if (s_instance.serviceName == null || s_instance.serviceName.isEmpty())
return false;
return s_instance.add(s_instance.serviceName, attrName, value);
}
public static boolean add(String attrName) {
return add(attrName, 1);
}
public static boolean set(String attrName, int value) {
if (s_instance.serviceName == null || s_instance.serviceName.isEmpty())
return false;
return s_instance.set(s_instance.serviceName, attrName, value);
}
public static void main(String[] args)
{
//Initialize
AccessMonitor.initialize("/msec/agent/monitor/monitor.mmap");
AccessMonitor.initServiceName("TestModuleName");
AccessMonitor.add("test", 1);
}
}