Skip to content

Commit b0d8192

Browse files
authored
Merge pull request #40 from vshcryabets/fix/update-styx-messages
Update styx messages in Java
2 parents fed4403 + e78f13f commit b0d8192

14 files changed

Lines changed: 150 additions & 84 deletions

File tree

java/v2styx-lib/src/main/java/com/v2soft/styxlib/handlers/TMessagesProcessor.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
import com.v2soft.styxlib.l5.messages.StyxTCreateMessage;
1414
import com.v2soft.styxlib.l5.messages.StyxTOpenMessage;
1515
import com.v2soft.styxlib.l5.messages.StyxTReadMessage;
16-
import com.v2soft.styxlib.l5.messages.StyxTWStatMessage;
17-
import com.v2soft.styxlib.l5.messages.StyxTWalkMessage;
16+
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWStatMessage;
17+
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWalkMessage;
1818
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWriteMessage;
1919
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
2020
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
@@ -161,14 +161,14 @@ private StyxMessage processWalk(int clientId, StyxTWalkMessage msg) throws StyxE
161161
final List<StyxQID> qidsList = new LinkedList<StyxQID>();
162162
final IVirtualStyxFile walkFile = mDi.getClientsRepo().getAssignedFile(clientId, fid).walk(
163163
clientId,
164-
new LinkedList<>(msg.getPathElements()),
164+
new LinkedList<>(msg.mPathElements),
165165
qidsList);
166166
if (walkFile != null) {
167-
mDi.getClientsRepo().getClient(clientId).registerOpenedFile(msg.getNewFID(), walkFile);
167+
mDi.getClientsRepo().getClient(clientId).registerOpenedFile(msg.mNewFID, walkFile);
168168
return new StyxRWalkMessage(msg.getTag(), qidsList);
169169
} else {
170170
return mDi.getMessageFactory().constructRerror(msg.getTag(),
171-
String.format("file \"%s\" does not exist", msg.getPathElements()));
171+
String.format("file \"%s\" does not exist", msg.mPathElements));
172172
}
173173
}
174174

java/v2styx-lib/src/main/java/com/v2soft/styxlib/l5/dev/Operations.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.v2soft.styxlib.Logger;
44
import com.v2soft.styxlib.l5.enums.MessageType;
5-
import com.v2soft.styxlib.l5.messages.StyxTWStatMessage;
65
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
76
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
87
import com.v2soft.styxlib.l5.messages.v9p2000.StyxRErrorMessage;
@@ -44,11 +43,6 @@ public static String toString(StyxMessage message) {
4443
result.append(" Error:");
4544
result.append(((StyxRErrorMessage)message).mError);
4645
break;
47-
case MessageType.Twstat: {
48-
result.append(" Stat: ");
49-
result.append(((StyxTWStatMessage) message).stat.toString());
50-
}
51-
break;
5246
case MessageType.Tattach:
5347
result.append("AuthFID: ");
5448
result.append(((StyxTAttachMessage) message).authFID);

java/v2styx-lib/src/main/java/com/v2soft/styxlib/l5/messages/StyxTWalkMessage.java

Lines changed: 0 additions & 47 deletions
This file was deleted.

java/v2styx-lib/src/main/java/com/v2soft/styxlib/l5/messages/base/Factory.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.v2soft.styxlib.l5.messages.base;
22

33
import com.v2soft.styxlib.l5.structs.StyxQID;
4+
import com.v2soft.styxlib.l5.structs.StyxStat;
5+
6+
import java.util.List;
47

58
public interface Factory {
69
StyxMessage constructTVersion(long iounit, String version);
@@ -13,4 +16,6 @@ public interface Factory {
1316
StyxMessage constructROpenMessage(int tag, StyxQID qid, long iounit);
1417
StyxMessage constructRCreateMessage(int tag, StyxQID qid, long iounit);
1518
StyxMessage constructTWriteMessage(long fid, long fileOffset, byte[] data, int dataOffset, int dataLength);
19+
StyxMessage constructTWalkMessage(long fid, long new_fid, List<String> path);
20+
StyxMessage constructTWStatMessage(long fid, StyxStat stat);
1621
}

java/v2styx-lib/src/main/java/com/v2soft/styxlib/l5/messages/v9p2000/FactoryImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import com.v2soft.styxlib.l5.messages.base.Factory;
44
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
55
import com.v2soft.styxlib.l5.structs.StyxQID;
6+
import com.v2soft.styxlib.l5.structs.StyxStat;
7+
8+
import java.util.List;
69

710
public class FactoryImpl implements Factory {
811
@Override
@@ -54,4 +57,14 @@ public StyxMessage constructRCreateMessage(int tag, StyxQID qid, long iounit) {
5457
public StyxMessage constructTWriteMessage(long fid, long fileOffset, byte[] data, int dataOffset, int dataLength) {
5558
return new StyxTWriteMessage(fid, fileOffset, data, dataOffset, dataLength);
5659
}
60+
61+
@Override
62+
public StyxMessage constructTWalkMessage(long fid, long new_fid, List<String> path) {
63+
return new StyxTWalkMessage(fid, new_fid, path);
64+
}
65+
66+
@Override
67+
public StyxMessage constructTWStatMessage(long fid, StyxStat stat) {
68+
return new StyxTWStatMessage(fid, stat);
69+
}
5770
}

java/v2styx-lib/src/main/java/com/v2soft/styxlib/l5/messages/StyxTWStatMessage.java renamed to java/v2styx-lib/src/main/java/com/v2soft/styxlib/l5/messages/v9p2000/StyxTWStatMessage.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.v2soft.styxlib.l5.messages;
1+
package com.v2soft.styxlib.l5.messages.v9p2000;
22

33
import com.v2soft.styxlib.l5.enums.MessageType;
44
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
@@ -7,7 +7,7 @@
77
public class StyxTWStatMessage extends StyxTMessageFID {
88
public final StyxStat stat;
99

10-
public StyxTWStatMessage(long fid, StyxStat stat) {
10+
protected StyxTWStatMessage(long fid, StyxStat stat) {
1111
super(MessageType.Twstat, fid);
1212
this.stat = stat;
1313
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.v2soft.styxlib.l5.messages.v9p2000;
2+
3+
import com.v2soft.styxlib.l5.enums.MessageType;
4+
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
5+
6+
import java.util.List;
7+
8+
/**
9+
*
10+
* @author V.Shcriyabets (vshcryabets@gmail.com)
11+
*
12+
*/
13+
public class StyxTWalkMessage
14+
extends StyxTMessageFID {
15+
public final long mNewFID;
16+
public final List<String> mPathElements;
17+
18+
protected StyxTWalkMessage(long fid, long new_fid, List<String> path){
19+
super(MessageType.Twalk, fid);
20+
mNewFID = new_fid;
21+
mPathElements = path;
22+
}
23+
}

java/v2styx-lib/src/main/java/com/v2soft/styxlib/l5/v9p2000/StringSerializerImpl.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package com.v2soft.styxlib.l5.v9p2000;
22

3-
import com.v2soft.styxlib.exceptions.StyxException;
43
import com.v2soft.styxlib.l5.dev.StringSerializer;
54
import com.v2soft.styxlib.l5.enums.MessageType;
65
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
76
import com.v2soft.styxlib.l5.messages.v9p2000.BaseMessage;
87
import com.v2soft.styxlib.l5.messages.v9p2000.StyxROpenMessage;
98
import com.v2soft.styxlib.l5.messages.v9p2000.StyxRVersionMessage;
109
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTVersionMessage;
10+
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWStatMessage;
11+
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWalkMessage;
1112
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWriteMessage;
1213
import com.v2soft.styxlib.l5.structs.StyxQID;
1314
import com.v2soft.styxlib.l5.structs.StyxStat;
@@ -20,7 +21,7 @@ public String serializeQid(StyxQID qid) {
2021
}
2122

2223
@Override
23-
public String serializeStat(StyxStat stat) throws StyxException {
24+
public String serializeStat(StyxStat stat) {
2425
StringBuilder result = new StringBuilder();
2526
result.append("Stat ")
2627
.append(String.format("0x%x,0x%x,", stat.type(), stat.dev()))
@@ -73,6 +74,20 @@ public String serializeMessage(StyxMessage message) {
7374
result.append(",iounit:");
7475
result.append(((StyxROpenMessage)message).ioUnit);
7576
break;
77+
case MessageType.Twalk:
78+
result.append(",fid:");
79+
result.append(((StyxTWalkMessage)message).mFID);
80+
result.append(",newFid:");
81+
result.append(((StyxTWalkMessage)message).mNewFID);
82+
result.append(",pathElements:");
83+
result.append(((StyxTWalkMessage)message).mPathElements);
84+
break;
85+
case MessageType.Twstat:
86+
result.append(",fid:");
87+
result.append(((StyxTWStatMessage)message).mFID);
88+
result.append(",Stat:");
89+
result.append(serializeStat(((StyxTWStatMessage)message).stat));
90+
break;
7691
default:
7792
result.append(" (not implemented for this message type)");
7893
break;

java/v2styx-lib/src/main/java/com/v2soft/styxlib/l5/v9p2000/StyxDeserializerImpl.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
import com.v2soft.styxlib.l5.messages.StyxTFlushMessage;
1212
import com.v2soft.styxlib.l5.messages.StyxTOpenMessage;
1313
import com.v2soft.styxlib.l5.messages.StyxTReadMessage;
14-
import com.v2soft.styxlib.l5.messages.StyxTWStatMessage;
15-
import com.v2soft.styxlib.l5.messages.StyxTWalkMessage;
1614
import com.v2soft.styxlib.l5.messages.base.Factory;
1715
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
1816
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
@@ -63,7 +61,7 @@ public StyxMessage deserializeMessage(IBufferReader buffer, int io_unit) throws
6361
for (int i = 0; i < count; i++) {
6462
pathElements.add(buffer.readUTFString());
6563
}
66-
result = new StyxTWalkMessage(fid,
64+
result = messageFactory.constructTWalkMessage(fid,
6765
newFid,
6866
pathElements);
6967
}
@@ -136,7 +134,7 @@ public StyxMessage deserializeMessage(IBufferReader buffer, int io_unit) throws
136134
var fid = buffer.readUInt32();
137135
buffer.readUInt16(); // ???
138136
var stat = deserializeStat(buffer);
139-
result = new StyxTWStatMessage(fid, stat);
137+
result = messageFactory.constructTWStatMessage(fid, stat);
140138
}
141139
case MessageType.Rwstat -> result = new BaseMessage(MessageType.Rwstat, tag, null);
142140
default ->

java/v2styx-lib/src/main/java/com/v2soft/styxlib/l5/v9p2000/StyxSerializerImpl.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public int getMessageSize(StyxMessage message) {
4444
case MessageType.Twalk -> {
4545
var walkMessage = (StyxTWalkMessage)message;
4646
size += 4 + 2;
47-
for (var pathElement : walkMessage.getPathElements())
47+
for (var pathElement : walkMessage.mPathElements)
4848
size += UTF.getUTFSize(pathElement);
4949
}
5050
case MessageType.Topen -> size++;
@@ -104,10 +104,10 @@ private void serializeTMessage(StyxMessage message, IBufferWriter output) throws
104104
break;
105105
case MessageType.Twalk:
106106
StyxTWalkMessage tWalk = (StyxTWalkMessage) message;
107-
output.writeUInt32(tWalk.getNewFID());
108-
if (tWalk.getPathElements() != null) {
109-
output.writeUInt16(tWalk.getPathElements().size());
110-
for (String pathElement : tWalk.getPathElements())
107+
output.writeUInt32(tWalk.mNewFID);
108+
if (tWalk.mPathElements != null) {
109+
output.writeUInt16(tWalk.mPathElements.size());
110+
for (String pathElement : tWalk.mPathElements)
111111
output.writeUTFString(pathElement);
112112
} else {
113113
output.writeUInt16(0);

0 commit comments

Comments
 (0)