Skip to content

Commit 09deb53

Browse files
authored
Merge pull request #41 from vshcryabets/update/styx-messages
Move few more message classes to factory
2 parents b0d8192 + 6b5273a commit 09deb53

10 files changed

Lines changed: 73 additions & 32 deletions

File tree

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,19 @@
77
import com.v2soft.styxlib.l5.dev.MetricsAndStats;
88
import com.v2soft.styxlib.l5.enums.MessageType;
99
import com.v2soft.styxlib.l5.messages.StyxRReadMessage;
10-
import com.v2soft.styxlib.l5.messages.StyxRStatMessage;
1110
import com.v2soft.styxlib.l5.messages.StyxRWalkMessage;
1211
import com.v2soft.styxlib.l5.messages.StyxRWriteMessage;
1312
import com.v2soft.styxlib.l5.messages.StyxTCreateMessage;
14-
import com.v2soft.styxlib.l5.messages.StyxTOpenMessage;
13+
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTOpenMessage;
1514
import com.v2soft.styxlib.l5.messages.StyxTReadMessage;
16-
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWStatMessage;
17-
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWalkMessage;
18-
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWriteMessage;
1915
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
2016
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
2117
import com.v2soft.styxlib.l5.messages.v9p2000.BaseMessage;
2218
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTAttachMessage;
2319
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTAuthMessage;
20+
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWStatMessage;
21+
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWalkMessage;
22+
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWriteMessage;
2423
import com.v2soft.styxlib.l5.structs.StyxQID;
2524
import com.v2soft.styxlib.l6.vfs.IVirtualStyxFile;
2625
import com.v2soft.styxlib.library.types.ConnectionDetails;
@@ -82,7 +81,7 @@ public void processPacket(StyxMessage message, int clientId) throws StyxExceptio
8281
case MessageType.Tstat:
8382
fid = ((StyxTMessageFID)message).getFID();
8483
file = mDi.getClientsRepo().getAssignedFile(clientId, fid);
85-
answer = new StyxRStatMessage(message.getTag(), file.getStat());
84+
answer = mDi.getMessageFactory().constructRStatMessage(message.getTag(), file.getStat());
8685
break;
8786
case MessageType.Tclunk:
8887
answer = processClunk(clientId, (StyxTMessageFID)message);

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,7 @@ public interface Factory {
1818
StyxMessage constructTWriteMessage(long fid, long fileOffset, byte[] data, int dataOffset, int dataLength);
1919
StyxMessage constructTWalkMessage(long fid, long new_fid, List<String> path);
2020
StyxMessage constructTWStatMessage(long fid, StyxStat stat);
21+
StyxMessage constructRStatMessage(int tag, StyxStat stat);
22+
StyxMessage constructTFlushMessage(int tag);
23+
StyxMessage constructTOpenMessage(long fid, int mode);
2124
}

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,19 @@ public StyxMessage constructTWalkMessage(long fid, long new_fid, List<String> pa
6767
public StyxMessage constructTWStatMessage(long fid, StyxStat stat) {
6868
return new StyxTWStatMessage(fid, stat);
6969
}
70+
71+
@Override
72+
public StyxMessage constructRStatMessage(int tag, StyxStat stat) {
73+
return new StyxRStatMessage(tag, stat);
74+
}
75+
76+
@Override
77+
public StyxMessage constructTFlushMessage(int tag) {
78+
return new StyxTFlushMessage(tag);
79+
}
80+
81+
@Override
82+
public StyxMessage constructTOpenMessage(long fid, int mode) {
83+
return new StyxTOpenMessage(fid, mode);
84+
}
7085
}

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

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

33
import com.v2soft.styxlib.l5.enums.MessageType;
4-
import com.v2soft.styxlib.l5.messages.v9p2000.BaseMessage;
54
import com.v2soft.styxlib.l5.structs.StyxStat;
65

76
public class StyxRStatMessage extends BaseMessage {
87
public final StyxStat stat;
98

10-
public StyxRStatMessage(int tag, StyxStat stat) {
9+
protected StyxRStatMessage(int tag, StyxStat stat) {
1110
super(MessageType.Rstat, tag, null);
1211
this.stat = stat;
1312
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
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.StyxTMessage;
55

66
public class StyxTFlushMessage extends StyxTMessage {
77
public final int oldTag;
88

9-
public StyxTFlushMessage(int tag){
9+
protected StyxTFlushMessage(int tag){
1010
super(MessageType.Tflush);
1111
oldTag = tag;
1212
}

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

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

66
public class StyxTOpenMessage extends StyxTMessageFID {
77
public final int mode;
88

9-
public StyxTOpenMessage(long fid, int mode) {
9+
protected StyxTOpenMessage(long fid, int mode) {
1010
super(MessageType.Topen, fid);
1111
this.mode = mode;
1212
}

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,9 @@
44
import com.v2soft.styxlib.l5.dev.MetricsAndStats;
55
import com.v2soft.styxlib.l5.enums.MessageType;
66
import com.v2soft.styxlib.l5.messages.StyxRReadMessage;
7-
import com.v2soft.styxlib.l5.messages.StyxRStatMessage;
87
import com.v2soft.styxlib.l5.messages.StyxRWalkMessage;
98
import com.v2soft.styxlib.l5.messages.StyxRWriteMessage;
109
import com.v2soft.styxlib.l5.messages.StyxTCreateMessage;
11-
import com.v2soft.styxlib.l5.messages.StyxTFlushMessage;
12-
import com.v2soft.styxlib.l5.messages.StyxTOpenMessage;
1310
import com.v2soft.styxlib.l5.messages.StyxTReadMessage;
1411
import com.v2soft.styxlib.l5.messages.base.Factory;
1512
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
@@ -48,7 +45,7 @@ public StyxMessage deserializeMessage(IBufferReader buffer, int io_unit) throws
4845
buffer.readUInt32(),
4946
buffer.readUTFString(),
5047
buffer.readUTFString());
51-
case MessageType.Tflush -> result = new StyxTFlushMessage(buffer.readUInt16());
48+
case MessageType.Tflush -> result = messageFactory.constructTFlushMessage(buffer.readUInt16());
5249
case MessageType.Tattach -> result = messageFactory.constructTAttach(buffer.readUInt32(),
5350
buffer.readUInt32(),
5451
buffer.readUTFString(),
@@ -77,7 +74,7 @@ public StyxMessage deserializeMessage(IBufferReader buffer, int io_unit) throws
7774
}
7875
result = new StyxRWalkMessage(tag, qids);
7976
}
80-
case MessageType.Topen -> result = new StyxTOpenMessage(buffer.readUInt32(),
77+
case MessageType.Topen -> result = messageFactory.constructTOpenMessage(buffer.readUInt32(),
8178
buffer.readUInt8());
8279
case MessageType.Ropen -> result = messageFactory.constructROpenMessage(tag,
8380
deserializeQid(buffer),
@@ -128,7 +125,7 @@ public StyxMessage deserializeMessage(IBufferReader buffer, int io_unit) throws
128125
buffer.readUInt32());
129126
case MessageType.Rstat -> {
130127
buffer.readUInt16(); //??
131-
result = new StyxRStatMessage(tag, deserializeStat(buffer));
128+
result = messageFactory.constructRStatMessage(tag, deserializeStat(buffer));
132129
}
133130
case MessageType.Twstat -> {
134131
var fid = buffer.readUInt32();

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@
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.StyxRStatMessage;
1312
import com.v2soft.styxlib.l5.messages.StyxTCreateMessage;
14-
import com.v2soft.styxlib.l5.messages.StyxTOpenMessage;
1513
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
1614
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
1715
import com.v2soft.styxlib.l5.messages.v9p2000.StyxRErrorMessage;
1816
import com.v2soft.styxlib.l5.messages.v9p2000.StyxROpenMessage;
17+
import com.v2soft.styxlib.l5.messages.v9p2000.StyxRStatMessage;
1918
import com.v2soft.styxlib.l5.structs.StyxStat;
2019
import com.v2soft.styxlib.l5.v9p2000.StyxSerializerImpl;
2120
import com.v2soft.styxlib.l6.io.StyxFileBufferedInputStream;
@@ -71,7 +70,7 @@ public long getFID()
7170

7271
private int open(int mode, long fid)
7372
throws StyxException {
74-
final StyxTOpenMessage tOpen = new StyxTOpenMessage(fid, mode);
73+
final StyxMessage tOpen = mDI.getMessageFactory().constructTOpenMessage(fid, mode);
7574
final var rOpen = (StyxROpenMessage) mTransmitter.sendMessage(tOpen, mClientId)
7675
.getResult(mTimeout);
7776
return (int) rOpen.ioUnit;

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

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package com.v2soft.styxlib.l5.messages.v9p2000;
22

33
import com.v2soft.styxlib.l5.enums.Constants;
4+
import com.v2soft.styxlib.l5.enums.FileMode;
45
import com.v2soft.styxlib.l5.enums.MessageType;
56
import com.v2soft.styxlib.l5.messages.base.Factory;
67
import com.v2soft.styxlib.l5.structs.StyxQID;
7-
88
import com.v2soft.styxlib.l5.structs.StyxStat;
9+
910
import org.junit.jupiter.api.Assertions;
1011
import org.junit.jupiter.api.Test;
1112

@@ -137,4 +138,33 @@ public void testCreateTWStat() {
137138
Assertions.assertEquals(1080, ((StyxTWStatMessage) message).mFID);
138139
Assertions.assertEquals(StyxStat.EMPTY, ((StyxTWStatMessage) message).stat);
139140
}
141+
142+
@Test
143+
public void testCreateRStat() {
144+
var message = factory.constructRStatMessage(1, StyxStat.EMPTY);
145+
Assertions.assertNotNull(message);
146+
Assertions.assertEquals(1, message.getTag());
147+
Assertions.assertInstanceOf(StyxRStatMessage.class, message);
148+
Assertions.assertEquals(MessageType.Rstat, message.getType());
149+
Assertions.assertEquals(StyxStat.EMPTY, ((StyxRStatMessage) message).stat);
150+
}
151+
152+
@Test
153+
public void testCreateTFlush() {
154+
var message = factory.constructTFlushMessage(1);
155+
Assertions.assertNotNull(message);
156+
Assertions.assertEquals(1, ((StyxTFlushMessage)message).oldTag);
157+
Assertions.assertInstanceOf(StyxTFlushMessage.class, message);
158+
Assertions.assertEquals(MessageType.Tflush, message.getType());
159+
}
160+
161+
@Test
162+
public void testCreateTOpen() {
163+
var message = factory.constructTOpenMessage(1, (int) FileMode.AppendOnly);
164+
Assertions.assertNotNull(message);
165+
Assertions.assertEquals(1, ((StyxTOpenMessage)message).getFID());
166+
Assertions.assertEquals(FileMode.AppendOnly, ((StyxTOpenMessage)message).mode);
167+
Assertions.assertInstanceOf(StyxTOpenMessage.class, message);
168+
Assertions.assertEquals(MessageType.Topen, message.getType());
169+
}
140170
}

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

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package com.v2soft.styxlib.l5.v9p2000;
22

3+
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
4+
import static org.junit.jupiter.api.Assertions.assertEquals;
5+
36
import com.v2soft.styxlib.exceptions.StyxException;
47
import com.v2soft.styxlib.l5.enums.MessageType;
58
import com.v2soft.styxlib.l5.enums.QidType;
69
import com.v2soft.styxlib.l5.messages.StyxRReadMessage;
7-
import com.v2soft.styxlib.l5.messages.StyxRStatMessage;
810
import com.v2soft.styxlib.l5.messages.StyxRWalkMessage;
911
import com.v2soft.styxlib.l5.messages.StyxRWriteMessage;
1012
import com.v2soft.styxlib.l5.messages.StyxTCreateMessage;
11-
import com.v2soft.styxlib.l5.messages.StyxTFlushMessage;
12-
import com.v2soft.styxlib.l5.messages.StyxTOpenMessage;
1313
import com.v2soft.styxlib.l5.messages.StyxTReadMessage;
1414
import com.v2soft.styxlib.l5.messages.base.Factory;
1515
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
@@ -19,15 +19,13 @@
1919
import com.v2soft.styxlib.l5.serialization.impl.BufferWriterImpl;
2020
import com.v2soft.styxlib.l5.structs.StyxQID;
2121
import com.v2soft.styxlib.l5.structs.StyxStat;
22+
2223
import org.junit.jupiter.api.Test;
2324

2425
import java.util.Collections;
2526
import java.util.Date;
2627
import java.util.List;
2728

28-
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
29-
import static org.junit.jupiter.api.Assertions.assertEquals;
30-
3129
class StyxSerializerImplTest {
3230
Factory messageFactory = new FactoryImpl();
3331
StyxSerializerImpl serializer = new StyxSerializerImpl();
@@ -73,7 +71,7 @@ void testGetSize() {
7371
List.of("a","b","c"))));
7472

7573
assertEquals(IDataSerializer.BASE_BINARY_SIZE + 4 + 1,
76-
serializer.getMessageSize(new StyxTOpenMessage(
74+
serializer.getMessageSize(messageFactory.constructTOpenMessage(
7775
0x1234,
7876
1)));
7977

@@ -116,13 +114,14 @@ void testGetSize() {
116114
serializer.getMessageSize(new StyxRWriteMessage(0x1111, 0x2222)));
117115

118116
assertEquals(IDataSerializer.BASE_BINARY_SIZE + 51,
119-
serializer.getMessageSize(new StyxRStatMessage(0x1111, StyxStat.EMPTY)));
117+
serializer.getMessageSize(messageFactory.constructRStatMessage(
118+
0x1111, StyxStat.EMPTY)));
120119

121120
assertEquals(IDataSerializer.BASE_BINARY_SIZE + 4 + 4,
122121
serializer.getMessageSize(new StyxRReadMessage(0x1111, new byte[]{0x1, 0x2, 0x3, 0x4}, 4)));
123122

124123
assertEquals(IDataSerializer.BASE_BINARY_SIZE + 2,
125-
serializer.getMessageSize(new StyxTFlushMessage(0x1111)));
124+
serializer.getMessageSize(messageFactory.constructTFlushMessage(0x1111)));
126125

127126
assertEquals(IDataSerializer.BASE_BINARY_SIZE + 4 + 2 + 4,
128127
serializer.getMessageSize(messageFactory.constructTVersion(0x1111, "ABCD")));

0 commit comments

Comments
 (0)