Skip to content

Commit e78f13f

Browse files
committed
Update StyxTWStatMessage
1 parent ede1134 commit e78f13f

11 files changed

Lines changed: 68 additions & 21 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
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;
16+
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWStatMessage;
1717
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;

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/base/Factory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
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;
45

56
import java.util.List;
67

@@ -16,4 +17,5 @@ public interface Factory {
1617
StyxMessage constructRCreateMessage(int tag, StyxQID qid, long iounit);
1718
StyxMessage constructTWriteMessage(long fid, long fileOffset, byte[] data, int dataOffset, int dataLength);
1819
StyxMessage constructTWalkMessage(long fid, long new_fid, List<String> path);
20+
StyxMessage constructTWStatMessage(long fid, StyxStat stat);
1921
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
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;
67

78
import java.util.List;
89

@@ -61,4 +62,9 @@ public StyxMessage constructTWriteMessage(long fid, long fileOffset, byte[] data
6162
public StyxMessage constructTWalkMessage(long fid, long new_fid, List<String> path) {
6263
return new StyxTWalkMessage(fid, new_fid, path);
6364
}
65+
66+
@Override
67+
public StyxMessage constructTWStatMessage(long fid, StyxStat stat) {
68+
return new StyxTWStatMessage(fid, stat);
69+
}
6470
}

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
}

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
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;
1111
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWalkMessage;
1212
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWriteMessage;
1313
import com.v2soft.styxlib.l5.structs.StyxQID;
@@ -21,7 +21,7 @@ public String serializeQid(StyxQID qid) {
2121
}
2222

2323
@Override
24-
public String serializeStat(StyxStat stat) throws StyxException {
24+
public String serializeStat(StyxStat stat) {
2525
StringBuilder result = new StringBuilder();
2626
result.append("Stat ")
2727
.append(String.format("0x%x,0x%x,", stat.type(), stat.dev()))
@@ -82,6 +82,12 @@ public String serializeMessage(StyxMessage message) {
8282
result.append(",pathElements:");
8383
result.append(((StyxTWalkMessage)message).mPathElements);
8484
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;
8591
default:
8692
result.append(" (not implemented for this message type)");
8793
break;

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +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;
1514
import com.v2soft.styxlib.l5.messages.base.Factory;
1615
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
1716
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
@@ -135,7 +134,7 @@ public StyxMessage deserializeMessage(IBufferReader buffer, int io_unit) throws
135134
var fid = buffer.readUInt32();
136135
buffer.readUInt16(); // ???
137136
var stat = deserializeStat(buffer);
138-
result = new StyxTWStatMessage(fid, stat);
137+
result = messageFactory.constructTWStatMessage(fid, stat);
139138
}
140139
case MessageType.Rwstat -> result = new BaseMessage(MessageType.Rwstat, tag, null);
141140
default ->

java/v2styx-lib/src/main/java/com/v2soft/styxlib/l6/StyxFile.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
import com.v2soft.styxlib.l5.enums.FileMode;
1010
import com.v2soft.styxlib.l5.enums.MessageType;
1111
import com.v2soft.styxlib.l5.enums.ModeType;
12-
import com.v2soft.styxlib.l5.messages.*;
12+
import com.v2soft.styxlib.l5.messages.StyxRStatMessage;
13+
import com.v2soft.styxlib.l5.messages.StyxTCreateMessage;
14+
import com.v2soft.styxlib.l5.messages.StyxTOpenMessage;
1315
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
1416
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
1517
import com.v2soft.styxlib.l5.messages.v9p2000.StyxRErrorMessage;
@@ -219,7 +221,7 @@ public void renameTo(String name)
219221
stat.userName(),
220222
stat.groupName(),
221223
stat.modificationUser());
222-
StyxTWStatMessage tWStat = new StyxTWStatMessage(getFID(), newStat);
224+
StyxMessage tWStat = mDI.getMessageFactory().constructTWStatMessage(getFID(), newStat);
223225
mTransmitter.sendMessage(tWStat, mClientId).getResult(mTimeout);
224226
}
225227

java/v2styx-lib/src/test/java/com/v2soft/styxlib/l5/messages/v9p2000/FactoryImplTests.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.v2soft.styxlib.l5.messages.base.Factory;
66
import com.v2soft.styxlib.l5.structs.StyxQID;
77

8+
import com.v2soft.styxlib.l5.structs.StyxStat;
89
import org.junit.jupiter.api.Assertions;
910
import org.junit.jupiter.api.Test;
1011

@@ -125,4 +126,15 @@ public void testCreateTWalk() {
125126
Assertions.assertEquals(23432, ((StyxTWalkMessage) message).mNewFID);
126127
Assertions.assertEquals(3, ((StyxTWalkMessage) message).mPathElements.size());
127128
}
129+
130+
@Test
131+
public void testCreateTWStat() {
132+
var message = factory.constructTWStatMessage(1080, StyxStat.EMPTY);
133+
Assertions.assertNotNull(message);
134+
Assertions.assertEquals(Constants.NOTAG, message.getTag());
135+
Assertions.assertInstanceOf(StyxTWStatMessage.class, message);
136+
Assertions.assertEquals(MessageType.Twstat, message.getType());
137+
Assertions.assertEquals(1080, ((StyxTWStatMessage) message).mFID);
138+
Assertions.assertEquals(StyxStat.EMPTY, ((StyxTWStatMessage) message).stat);
139+
}
128140
}

java/v2styx-lib/src/test/java/com/v2soft/styxlib/l5/v9p2000/StringSerializerImplTests.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,4 +135,32 @@ public void testSerializeTWalk() {
135135
Assertions.assertTrue(str.contains("newFid:23432"));
136136
Assertions.assertTrue(str.contains("pathElements:[path1, path2, path3]"));
137137
}
138+
139+
@Test
140+
public void testSerializeTWStat() {
141+
Calendar utcCalendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
142+
utcCalendar.set(2001, 05, 04, 12, 30, 23);
143+
utcCalendar.set(Calendar.MILLISECOND, 0);
144+
var date = utcCalendar.getTime();
145+
StyxStat stat = new StyxStat(
146+
0x10,
147+
0x20,
148+
StyxQID.EMPTY,
149+
0x123,
150+
date, date,
151+
123,
152+
"testName",
153+
"testUser",
154+
"testGroup",
155+
"testModUser"
156+
);
157+
var message = messageFactory.constructTWStatMessage(1080, stat);
158+
message.setTag(123);
159+
var str = serializer.serializeMessage(message);
160+
Assertions.assertTrue(str.contains("Message Type:126"));
161+
Assertions.assertTrue(str.contains("fid:1080"));
162+
Assertions.assertTrue(str.contains("Stat 0x10,0x20,Qid=QID {type: 0, version: 0, path: 0},mode=0x123," +
163+
"atime=2001-06-04T12:30:23Z,mtime=2001-06-04T12:30:23Z," +
164+
"length=123,name=testName,user=testUser,group=testGroup,modUser=testModUser"));
165+
}
138166
}

0 commit comments

Comments
 (0)