Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,14 @@
import com.v2soft.styxlib.exceptions.StyxUnknownClientIdException;
import com.v2soft.styxlib.l5.dev.MetricsAndStats;
import com.v2soft.styxlib.l5.enums.MessageType;
import com.v2soft.styxlib.l5.messages.StyxRReadMessage;
import com.v2soft.styxlib.l5.messages.StyxRWalkMessage;
import com.v2soft.styxlib.l5.messages.StyxRWriteMessage;
import com.v2soft.styxlib.l5.messages.StyxTCreateMessage;
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTOpenMessage;
import com.v2soft.styxlib.l5.messages.StyxTReadMessage;
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTCreateMessage;
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
import com.v2soft.styxlib.l5.messages.v9p2000.BaseMessage;
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTAttachMessage;
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTAuthMessage;
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTOpenMessage;
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTReadMessage;
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWStatMessage;
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWalkMessage;
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWriteMessage;
Expand Down Expand Up @@ -164,7 +161,7 @@ private StyxMessage processWalk(int clientId, StyxTWalkMessage msg) throws StyxE
qidsList);
if (walkFile != null) {
mDi.getClientsRepo().getClient(clientId).registerOpenedFile(msg.mNewFID, walkFile);
return new StyxRWalkMessage(msg.getTag(), qidsList);
return mDi.getMessageFactory().constructRWalkMessage(msg.getTag(), qidsList);
} else {
return mDi.getMessageFactory().constructRerror(msg.getTag(),
String.format("file \"%s\" does not exist", msg.mPathElements));
Expand Down Expand Up @@ -206,7 +203,7 @@ private StyxMessage processWStat(StyxTWStatMessage msg) {

private StyxMessage processWrite(int clientId, StyxTWriteMessage msg) throws StyxException {
long fid = msg.getFID();
return new StyxRWriteMessage(msg.getTag(),
return mDi.getMessageFactory().constructRWriteMessage(msg.getTag(),
mDi.getClientsRepo().getAssignedFile(clientId, fid).write(clientId, msg.data, msg.offset));
}

Expand All @@ -217,7 +214,7 @@ private StyxMessage processRead(int clientId, StyxTReadMessage msg) throws StyxE
long fid = msg.getFID();
byte[] buffer = new byte[(int) msg.count];
MetricsAndStats.byteArrayAllocationRRead++;
return new StyxRReadMessage(msg.getTag(), buffer,
return mDi.getMessageFactory().constructRReadMessage(msg.getTag(), buffer,
mDi.getClientsRepo()
.getAssignedFile(clientId, fid)
.read(clientId, buffer, msg.offset, msg.count));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,9 @@ public interface Factory {
StyxMessage constructRStatMessage(int tag, StyxStat stat);
StyxMessage constructTFlushMessage(int tag);
StyxMessage constructTOpenMessage(long fid, int mode);
StyxMessage constructRWriteMessage(int tag, long count);
StyxMessage constructTReadMessage(long fid, long offset, int count);
StyxMessage constructRWalkMessage(int tag, List<StyxQID> empty);
StyxMessage constructRReadMessage(int tag, byte[] data, int size);
StyxMessage constructTCreateMessage(long fid, String name, long permissions, int mode);
}
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,29 @@ public StyxMessage constructTFlushMessage(int tag) {
public StyxMessage constructTOpenMessage(long fid, int mode) {
return new StyxTOpenMessage(fid, mode);
}

@Override
public StyxMessage constructRWriteMessage(int tag, long count) {
return new StyxRWriteMessage(tag, count);
}

@Override
public StyxMessage constructTReadMessage(long fid, long offset, int count) {
return new StyxTReadMessage(fid, offset, count);
}

@Override
public StyxMessage constructRWalkMessage(int tag, List<StyxQID> empty) {
return new StyxRWalkMessage(tag, empty);
}

@Override
public StyxMessage constructRReadMessage(int tag, byte[] data, int size) {
return new StyxRReadMessage(tag, data, size);
}

@Override
public StyxMessage constructTCreateMessage(long fid, String name, long permissions, int mode) {
return new StyxTCreateMessage(fid, name, permissions, mode);
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
package com.v2soft.styxlib.l5.messages;
package com.v2soft.styxlib.l5.messages.v9p2000;

import com.v2soft.styxlib.Config;
import com.v2soft.styxlib.l5.dev.Operations;
import com.v2soft.styxlib.l5.enums.MessageType;
import com.v2soft.styxlib.l5.messages.v9p2000.BaseMessage;

public class StyxRReadMessage extends BaseMessage {
public final byte[] data;
public final int dataLength;

public StyxRReadMessage(int tag, byte[] data, int length) {
protected StyxRReadMessage(int tag, byte[] data, int length) {
super(MessageType.Rread, tag, null);
if (length < 0) {
throw new IllegalArgumentException("length is negative " + length);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
package com.v2soft.styxlib.l5.messages;
package com.v2soft.styxlib.l5.messages.v9p2000;

import com.v2soft.styxlib.l5.enums.MessageType;
import com.v2soft.styxlib.l5.messages.v9p2000.BaseMessage;
import com.v2soft.styxlib.l5.structs.StyxQID;

import java.util.List;

public class StyxRWalkMessage extends BaseMessage {
public final List<StyxQID> qidList;

public StyxRWalkMessage(int tag, List<StyxQID> qids) {
protected StyxRWalkMessage(int tag, List<StyxQID> qids) {
super(MessageType.Rwalk, tag, null);
qidList = qids;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package com.v2soft.styxlib.l5.messages;
package com.v2soft.styxlib.l5.messages.v9p2000;

import com.v2soft.styxlib.l5.enums.MessageType;
import com.v2soft.styxlib.l5.messages.v9p2000.BaseMessage;

public class StyxRWriteMessage extends BaseMessage {
public final long count;

public StyxRWriteMessage(int tag, long count) {
protected StyxRWriteMessage(int tag, long count) {
super(MessageType.Rwrite, tag, null);
this.count = count;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.v2soft.styxlib.l5.messages;
package com.v2soft.styxlib.l5.messages.v9p2000;

import com.v2soft.styxlib.l5.enums.MessageType;
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
Expand All @@ -8,7 +8,7 @@ public class StyxTCreateMessage extends StyxTMessageFID {
public final long permissions;
public final int mode;

public StyxTCreateMessage(long fid, String name, long permissions, int mode) {
protected StyxTCreateMessage(long fid, String name, long permissions, int mode) {
super(MessageType.Tcreate, fid);
this.name = name;
this.permissions = permissions;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.v2soft.styxlib.l5.messages;
package com.v2soft.styxlib.l5.messages.v9p2000;

import com.v2soft.styxlib.l5.enums.MessageType;
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
Expand All @@ -7,7 +7,7 @@ public class StyxTReadMessage extends StyxTMessageFID {
public final long offset;
public final int count;

public StyxTReadMessage(long fid, long offset, int count) {
protected StyxTReadMessage(long fid, long offset, int count) {
super(MessageType.Tread, fid);
this.offset = offset;
this.count = count;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
import com.v2soft.styxlib.exceptions.StyxException;
import com.v2soft.styxlib.l5.dev.MetricsAndStats;
import com.v2soft.styxlib.l5.enums.MessageType;
import com.v2soft.styxlib.l5.messages.StyxRReadMessage;
import com.v2soft.styxlib.l5.messages.StyxRWalkMessage;
import com.v2soft.styxlib.l5.messages.StyxRWriteMessage;
import com.v2soft.styxlib.l5.messages.StyxTCreateMessage;
import com.v2soft.styxlib.l5.messages.StyxTReadMessage;
import com.v2soft.styxlib.l5.messages.base.Factory;
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
Expand Down Expand Up @@ -72,22 +67,23 @@ public StyxMessage deserializeMessage(IBufferReader buffer, int io_unit) throws
for (int i = 0; i < count; i++) {
qids.add(deserializeQid(buffer));
}
result = new StyxRWalkMessage(tag, qids);
result = messageFactory.constructRWalkMessage(tag, qids);
}
case MessageType.Topen -> result = messageFactory.constructTOpenMessage(buffer.readUInt32(),
buffer.readUInt8());
case MessageType.Ropen -> result = messageFactory.constructROpenMessage(tag,
deserializeQid(buffer),
buffer.readUInt32());
case MessageType.Tcreate -> result = new StyxTCreateMessage(buffer.readUInt32(),
case MessageType.Tcreate -> result = messageFactory.constructTCreateMessage(
buffer.readUInt32(),
buffer.readUTFString(),
buffer.readUInt32(),
buffer.readUInt8());
case MessageType.Rcreate -> result = messageFactory.constructRCreateMessage(
tag,
deserializeQid(buffer),
buffer.readUInt32());
case MessageType.Tread -> result = new StyxTReadMessage(
case MessageType.Tread -> result = messageFactory.constructTReadMessage(
buffer.readUInt32(),
buffer.readUInt64(),
(int) buffer.readUInt32());
Expand All @@ -96,7 +92,7 @@ public StyxMessage deserializeMessage(IBufferReader buffer, int io_unit) throws
MetricsAndStats.byteArrayAllocationRRead++;
var data = new byte[dataLength];
buffer.readData(data, 0, dataLength);
result = new StyxRReadMessage(tag,
result = messageFactory.constructRReadMessage(tag,
data,
dataLength);
}
Expand All @@ -113,7 +109,7 @@ public StyxMessage deserializeMessage(IBufferReader buffer, int io_unit) throws
0,
0);
}
case MessageType.Rwrite -> result = new StyxRWriteMessage(tag, buffer.readUInt32());
case MessageType.Rwrite -> result = messageFactory.constructRWriteMessage(tag, buffer.readUInt32());
case MessageType.Tclunk -> result = new StyxTMessageFID(
MessageType.Tclunk,
buffer.readUInt32());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.v2soft.styxlib.exceptions.StyxException;
import com.v2soft.styxlib.l5.enums.Checks;
import com.v2soft.styxlib.l5.enums.MessageType;
import com.v2soft.styxlib.l5.messages.*;
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
import com.v2soft.styxlib.l5.messages.v9p2000.*;
Expand Down
21 changes: 15 additions & 6 deletions java/v2styx-lib/src/main/java/com/v2soft/styxlib/l6/StyxFile.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import com.v2soft.styxlib.l5.enums.FileMode;
import com.v2soft.styxlib.l5.enums.MessageType;
import com.v2soft.styxlib.l5.enums.ModeType;
import com.v2soft.styxlib.l5.messages.StyxTCreateMessage;
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
import com.v2soft.styxlib.l5.messages.v9p2000.StyxRErrorMessage;
Expand Down Expand Up @@ -96,7 +95,8 @@ public List<StyxStat> listStat()
var iounit = open(ModeType.OREAD, tempFID);
var stats = new ArrayList<StyxStat>();
try {
var is = new StyxFileBufferedInputStream(mTransmitter, tempFID, iounit, mClientId);
var is = new StyxFileBufferedInputStream(mTransmitter, tempFID, iounit, mClientId,
mDI.getGetMessagesFactoryUseCase());
var sis = new StyxDataInputStream(is);
while (true) {
stats.add(mDI.getDataDeserializer().deserializeStat(sis));
Expand Down Expand Up @@ -125,7 +125,8 @@ public StyxFileBufferedInputStream openForRead()
throws StyxException {
long tempFID = getCloneFID();
int iounit = open(ModeType.OREAD, tempFID);
return new StyxFileBufferedInputStream(mTransmitter, tempFID, iounit, mClientId);
return new StyxFileBufferedInputStream(mTransmitter, tempFID, iounit, mClientId,
mDI.getGetMessagesFactoryUseCase());
}

/**
Expand All @@ -136,7 +137,8 @@ public StyxFileBufferedInputStream openForRead()
public StyxUnbufferedInputStream openForReadUnbuffered() throws StyxException {
long tempFID = getCloneFID();
int iounit = open(ModeType.OREAD, tempFID);
return new StyxUnbufferedInputStream(tempFID, mTransmitter, iounit, mClientId);
return new StyxUnbufferedInputStream(tempFID, mTransmitter, iounit, mClientId,
mDI.getGetMessagesFactoryUseCase());
}

public OutputStream openForWrite()
Expand All @@ -158,7 +160,10 @@ public StyxUnbufferedOutputStream openForWriteUnbuffered()
public void create(long permissions) throws StyxException {
// reserve FID
long tempFID = sendWalkMessage(mParentFID, "");
var tCreate = new StyxTCreateMessage(tempFID, mPath, permissions, ModeType.OWRITE);
var tCreate = mDI.getMessageFactory().constructTCreateMessage(tempFID,
mPath,
permissions,
ModeType.OWRITE);
mTransmitter
.sendMessage(tCreate, mClientId)
// .exceptionally()
Expand Down Expand Up @@ -226,7 +231,11 @@ public void renameTo(String name)

public void mkdir(long permissions) throws InterruptedException, StyxException {
permissions = permissions & FileMode.PERMISSION_BITMASK | FileMode.Directory;
StyxTCreateMessage tCreate = new StyxTCreateMessage(mParentFID, getName(), permissions, ModeType.OREAD);
final var tCreate = mDI.getMessageFactory().constructTCreateMessage(
mParentFID,
getName(),
permissions,
ModeType.OREAD);
mTransmitter.sendMessage(tCreate, mClientId).getResult(mTimeout);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.v2soft.styxlib.l6.io;

import com.v2soft.styxlib.server.ClientDetails;
import com.v2soft.styxlib.handlers.IMessageTransmitter;
import com.v2soft.styxlib.utils.GetMessagesFactoryUseCase;

import java.io.BufferedInputStream;
import java.io.IOException;
Expand All @@ -21,10 +21,12 @@ public class StyxFileBufferedInputStream extends InputStream {
* @param iounit maximal block size.
*/
public StyxFileBufferedInputStream(IMessageTransmitter messenger,
long fid,
int iounit,
int clientId) {
mUnbufferedInput = new StyxUnbufferedInputStream(fid, messenger, iounit, clientId);
long fid,
int iounit,
int clientId,
GetMessagesFactoryUseCase getMessagesFactoryUseCase) {
mUnbufferedInput = new StyxUnbufferedInputStream(fid, messenger, iounit, clientId,
getMessagesFactoryUseCase);
mBufferedInput = new CBufferedInputStream(mUnbufferedInput, iounit);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package com.v2soft.styxlib.l6.io;

import com.v2soft.styxlib.l5.Connection;
import com.v2soft.styxlib.l5.messages.StyxRReadMessage;
import com.v2soft.styxlib.l5.messages.StyxTReadMessage;
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
import com.v2soft.styxlib.l5.enums.MessageType;
import com.v2soft.styxlib.handlers.IMessageTransmitter;
import com.v2soft.styxlib.l5.Connection;
import com.v2soft.styxlib.l5.dev.MetricsAndStats;
import com.v2soft.styxlib.l5.enums.MessageType;
import com.v2soft.styxlib.l5.messages.v9p2000.StyxRReadMessage;
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
import com.v2soft.styxlib.utils.GetMessagesFactoryUseCase;

import java.io.IOException;
import java.io.InputStream;
Expand All @@ -24,17 +25,20 @@ public class StyxUnbufferedInputStream extends InputStream {
private long mFileOffset = 0;
private int mIOUnitSize;
protected int mRecepient;
private GetMessagesFactoryUseCase getMessagesFactoryUseCase;

public StyxUnbufferedInputStream(long file,
IMessageTransmitter messenger,
int iounit,
int clientId) {
int clientId,
GetMessagesFactoryUseCase getMessagesFactoryUseCase) {
if ( clientId < 0 ) {
throw new NullPointerException("clientId is negative");
}
if ( messenger == null ) {
throw new NullPointerException("messenger is null");
}
this.getMessagesFactoryUseCase = getMessagesFactoryUseCase;
MetricsAndStats.byteArrayAllocationIo++;
mRecepient = clientId;
mIOUnitSize = iounit;
Expand All @@ -58,7 +62,8 @@ public int read(byte[] b, int off, int len) throws IOException {
int read = 0;
try {
// send Tread
final StyxTReadMessage tRead = new StyxTReadMessage(mFID, mFileOffset, len);
final StyxMessage tRead = getMessagesFactoryUseCase.get()
.constructTReadMessage(mFID, mFileOffset, len);
final var rRead = mMessenger.<StyxRReadMessage>sendMessage(tRead, mRecepient)
Comment on lines +65 to 67

Copilot AI Aug 5, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The variable name 'tRead' should follow Java naming conventions and be more descriptive, such as 'readMessage' or 'tReadMessage'.

Suggested change
final StyxMessage tRead = getMessagesFactoryUseCase.get()
.constructTReadMessage(mFID, mFileOffset, len);
final var rRead = mMessenger.<StyxRReadMessage>sendMessage(tRead, mRecepient)
final StyxMessage tReadMessage = getMessagesFactoryUseCase.get()
.constructTReadMessage(mFID, mFileOffset, len);
final var rRead = mMessenger.<StyxRReadMessage>sendMessage(tReadMessage, mRecepient)

Copilot uses AI. Check for mistakes.
.getResult(mTimeout);
read = rRead.dataLength;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.v2soft.styxlib.l5.Connection;
import com.v2soft.styxlib.l5.dev.MetricsAndStats;
import com.v2soft.styxlib.l5.enums.MessageType;
import com.v2soft.styxlib.l5.messages.StyxRWriteMessage;
import com.v2soft.styxlib.l5.messages.v9p2000.StyxRWriteMessage;
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
import com.v2soft.styxlib.utils.GetMessagesFactoryUseCase;
Expand Down
Loading
Loading