private int repeatWriteToFile = 5;
private int connAttempts = 3;
private int timeout = 3;
+ private String owner = null;
+ private String permissions = "g+rw";
//tutorial http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jni.html
//native method which is written in C and imported to Java
String file = prefix + "." + getJobid().getUnique();
- Long fileLength = ILFileWriter.write(file, message, repeatWriteToFile);
+ Long fileLength = ILFileWriter.write(file, message, repeatWriteToFile, owner, permissions);
if (socket != null) sendToSocket(socket,fileLength.longValue(),message,message.length(),connAttempts,timeout);
}
this.timeout = timeout;
}
+ public String getPermissions() {
+ return permissions;
+ }
+
+ public void setPermissions(String permissions) {
+ this.permissions = permissions;
+ }
+
+ public String getOwner() {
+ return owner;
+ }
+
+ public void setOwner(String owner) {
+ this.owner = owner;
+ }
+
}
private int repeatWriteToFile = 5;
private int timeout = 30000; //in milliseconds
private LBCredentials cred;
+ private String owner = null;
+ private String permissions = "g+rw";
private SSLSend sslSend = null;
public ContextLL() {
String message = super.createMessage(event);
- ILFileWriter.write(prefix, message, repeatWriteToFile);
+ ILFileWriter.write(prefix, message, repeatWriteToFile, owner, permissions);
sslSend.send(cred, address, port, timeout, message);
this.cred = cred;
}
-
+ public String getPermissions() {
+ return permissions;
+ }
+
+ public void setPermissions(String permissions) {
+ this.permissions = permissions;
+ }
+
+ public String getOwner() {
+ return owner;
+ }
+
+ public void setOwner(String owner) {
+ this.owner = owner;
+ }
+
}
* @param message message which will be written
* @param repeatWriteToFile count of attempts to write to file in case of failure
*/
- public static Long write(String prefix, String message, int repeatWriteToFile) throws LBException {
+ public static Long write(String prefix, String message, int repeatWriteToFile, String owner, String permissions) throws LBException {
FileWriter fileWriter = null;
long fileLength = 0;
FileLock fileLock = null;
File file;
- Runtime run = Runtime.getRuntime();
- String cmd[] = {"chmod", "g+rw", null};
+ Runtime run = Runtime.getRuntime();
+ String cmd_owner[] = {"chown", owner, null};
+ String cmd_perm[] = {"chmod", permissions, null};
for (int i = 0; i < repeatWriteToFile; i++) {
try {
out.close();
if (file.exists()) {
- cmd[2] = prefix;
- run.exec(cmd);
- break;
+ if (owner != null) {
+ cmd_owner[2] = prefix;
+ run.exec(cmd_owner);
+ }
+ if (permissions != null) {
+ cmd_perm[2] = prefix;
+ run.exec(cmd_perm);
+ }
+ break;
}
}
} catch (Throwable ex) {
return new Long(fileLength);
}
+
+ /**
+ * Writes message to a file and returns size of this file before writing the
+ * data
+ * @param prefix file path
+ * @param message message which will be written
+ * @param repeatWriteToFile count of attempts to write to file in case of failure
+ */
+ public static Long write(String prefix, String message, int repeatWriteToFile) throws LBException {
+ return ILFileWriter.write(prefix, message, repeatWriteToFile, null, null);
+ }
}