Skip to content

Commit 7227787

Browse files
authored
Merge pull request #42 from vshcryabets/feature/update-messages
Move few more message classes to factory
2 parents 09deb53 + b2cf69a commit 7227787

17 files changed

Lines changed: 161 additions & 67 deletions

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

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,14 @@
66
import com.v2soft.styxlib.exceptions.StyxUnknownClientIdException;
77
import com.v2soft.styxlib.l5.dev.MetricsAndStats;
88
import com.v2soft.styxlib.l5.enums.MessageType;
9-
import com.v2soft.styxlib.l5.messages.StyxRReadMessage;
10-
import com.v2soft.styxlib.l5.messages.StyxRWalkMessage;
11-
import com.v2soft.styxlib.l5.messages.StyxRWriteMessage;
12-
import com.v2soft.styxlib.l5.messages.StyxTCreateMessage;
13-
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTOpenMessage;
14-
import com.v2soft.styxlib.l5.messages.StyxTReadMessage;
9+
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTCreateMessage;
1510
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
1611
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
1712
import com.v2soft.styxlib.l5.messages.v9p2000.BaseMessage;
1813
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTAttachMessage;
1914
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTAuthMessage;
15+
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTOpenMessage;
16+
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTReadMessage;
2017
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWStatMessage;
2118
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWalkMessage;
2219
import com.v2soft.styxlib.l5.messages.v9p2000.StyxTWriteMessage;
@@ -164,7 +161,7 @@ private StyxMessage processWalk(int clientId, StyxTWalkMessage msg) throws StyxE
164161
qidsList);
165162
if (walkFile != null) {
166163
mDi.getClientsRepo().getClient(clientId).registerOpenedFile(msg.mNewFID, walkFile);
167-
return new StyxRWalkMessage(msg.getTag(), qidsList);
164+
return mDi.getMessageFactory().constructRWalkMessage(msg.getTag(), qidsList);
168165
} else {
169166
return mDi.getMessageFactory().constructRerror(msg.getTag(),
170167
String.format("file \"%s\" does not exist", msg.mPathElements));
@@ -206,7 +203,7 @@ private StyxMessage processWStat(StyxTWStatMessage msg) {
206203

207204
private StyxMessage processWrite(int clientId, StyxTWriteMessage msg) throws StyxException {
208205
long fid = msg.getFID();
209-
return new StyxRWriteMessage(msg.getTag(),
206+
return mDi.getMessageFactory().constructRWriteMessage(msg.getTag(),
210207
mDi.getClientsRepo().getAssignedFile(clientId, fid).write(clientId, msg.data, msg.offset));
211208
}
212209

@@ -217,7 +214,7 @@ private StyxMessage processRead(int clientId, StyxTReadMessage msg) throws StyxE
217214
long fid = msg.getFID();
218215
byte[] buffer = new byte[(int) msg.count];
219216
MetricsAndStats.byteArrayAllocationRRead++;
220-
return new StyxRReadMessage(msg.getTag(), buffer,
217+
return mDi.getMessageFactory().constructRReadMessage(msg.getTag(), buffer,
221218
mDi.getClientsRepo()
222219
.getAssignedFile(clientId, fid)
223220
.read(clientId, buffer, msg.offset, msg.count));

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
@@ -21,4 +21,9 @@ public interface Factory {
2121
StyxMessage constructRStatMessage(int tag, StyxStat stat);
2222
StyxMessage constructTFlushMessage(int tag);
2323
StyxMessage constructTOpenMessage(long fid, int mode);
24+
StyxMessage constructRWriteMessage(int tag, long count);
25+
StyxMessage constructTReadMessage(long fid, long offset, int count);
26+
StyxMessage constructRWalkMessage(int tag, List<StyxQID> empty);
27+
StyxMessage constructRReadMessage(int tag, byte[] data, int size);
28+
StyxMessage constructTCreateMessage(long fid, String name, long permissions, int mode);
2429
}

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,29 @@ public StyxMessage constructTFlushMessage(int tag) {
8282
public StyxMessage constructTOpenMessage(long fid, int mode) {
8383
return new StyxTOpenMessage(fid, mode);
8484
}
85+
86+
@Override
87+
public StyxMessage constructRWriteMessage(int tag, long count) {
88+
return new StyxRWriteMessage(tag, count);
89+
}
90+
91+
@Override
92+
public StyxMessage constructTReadMessage(long fid, long offset, int count) {
93+
return new StyxTReadMessage(fid, offset, count);
94+
}
95+
96+
@Override
97+
public StyxMessage constructRWalkMessage(int tag, List<StyxQID> empty) {
98+
return new StyxRWalkMessage(tag, empty);
99+
}
100+
101+
@Override
102+
public StyxMessage constructRReadMessage(int tag, byte[] data, int size) {
103+
return new StyxRReadMessage(tag, data, size);
104+
}
105+
106+
@Override
107+
public StyxMessage constructTCreateMessage(long fid, String name, long permissions, int mode) {
108+
return new StyxTCreateMessage(fid, name, permissions, mode);
109+
}
85110
}

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

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

33
import com.v2soft.styxlib.Config;
44
import com.v2soft.styxlib.l5.dev.Operations;
55
import com.v2soft.styxlib.l5.enums.MessageType;
6-
import com.v2soft.styxlib.l5.messages.v9p2000.BaseMessage;
76

87
public class StyxRReadMessage extends BaseMessage {
98
public final byte[] data;
109
public final int dataLength;
1110

12-
public StyxRReadMessage(int tag, byte[] data, int length) {
11+
protected StyxRReadMessage(int tag, byte[] data, int length) {
1312
super(MessageType.Rread, tag, null);
1413
if (length < 0) {
1514
throw new IllegalArgumentException("length is negative " + length);

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
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.StyxQID;
65

76
import java.util.List;
87

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

12-
public StyxRWalkMessage(int tag, List<StyxQID> qids) {
11+
protected StyxRWalkMessage(int tag, List<StyxQID> qids) {
1312
super(MessageType.Rwalk, tag, null);
1413
qidList = qids;
1514
}

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

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

65
public class StyxRWriteMessage extends BaseMessage {
76
public final long count;
87

9-
public StyxRWriteMessage(int tag, long count) {
8+
protected StyxRWriteMessage(int tag, long count) {
109
super(MessageType.Rwrite, tag, null);
1110
this.count = count;
1211
}

java/v2styx-lib/src/main/java/com/v2soft/styxlib/l5/messages/StyxTCreateMessage.java renamed to java/v2styx-lib/src/main/java/com/v2soft/styxlib/l5/messages/v9p2000/StyxTCreateMessage.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;
@@ -8,7 +8,7 @@ public class StyxTCreateMessage extends StyxTMessageFID {
88
public final long permissions;
99
public final int mode;
1010

11-
public StyxTCreateMessage(long fid, String name, long permissions, int mode) {
11+
protected StyxTCreateMessage(long fid, String name, long permissions, int mode) {
1212
super(MessageType.Tcreate, fid);
1313
this.name = name;
1414
this.permissions = permissions;

java/v2styx-lib/src/main/java/com/v2soft/styxlib/l5/messages/StyxTReadMessage.java renamed to java/v2styx-lib/src/main/java/com/v2soft/styxlib/l5/messages/v9p2000/StyxTReadMessage.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 @@ public class StyxTReadMessage extends StyxTMessageFID {
77
public final long offset;
88
public final int count;
99

10-
public StyxTReadMessage(long fid, long offset, int count) {
10+
protected StyxTReadMessage(long fid, long offset, int count) {
1111
super(MessageType.Tread, fid);
1212
this.offset = offset;
1313
this.count = count;

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

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@
33
import com.v2soft.styxlib.exceptions.StyxException;
44
import com.v2soft.styxlib.l5.dev.MetricsAndStats;
55
import com.v2soft.styxlib.l5.enums.MessageType;
6-
import com.v2soft.styxlib.l5.messages.StyxRReadMessage;
7-
import com.v2soft.styxlib.l5.messages.StyxRWalkMessage;
8-
import com.v2soft.styxlib.l5.messages.StyxRWriteMessage;
9-
import com.v2soft.styxlib.l5.messages.StyxTCreateMessage;
10-
import com.v2soft.styxlib.l5.messages.StyxTReadMessage;
116
import com.v2soft.styxlib.l5.messages.base.Factory;
127
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
138
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
@@ -72,22 +67,23 @@ public StyxMessage deserializeMessage(IBufferReader buffer, int io_unit) throws
7267
for (int i = 0; i < count; i++) {
7368
qids.add(deserializeQid(buffer));
7469
}
75-
result = new StyxRWalkMessage(tag, qids);
70+
result = messageFactory.constructRWalkMessage(tag, qids);
7671
}
7772
case MessageType.Topen -> result = messageFactory.constructTOpenMessage(buffer.readUInt32(),
7873
buffer.readUInt8());
7974
case MessageType.Ropen -> result = messageFactory.constructROpenMessage(tag,
8075
deserializeQid(buffer),
8176
buffer.readUInt32());
82-
case MessageType.Tcreate -> result = new StyxTCreateMessage(buffer.readUInt32(),
77+
case MessageType.Tcreate -> result = messageFactory.constructTCreateMessage(
78+
buffer.readUInt32(),
8379
buffer.readUTFString(),
8480
buffer.readUInt32(),
8581
buffer.readUInt8());
8682
case MessageType.Rcreate -> result = messageFactory.constructRCreateMessage(
8783
tag,
8884
deserializeQid(buffer),
8985
buffer.readUInt32());
90-
case MessageType.Tread -> result = new StyxTReadMessage(
86+
case MessageType.Tread -> result = messageFactory.constructTReadMessage(
9187
buffer.readUInt32(),
9288
buffer.readUInt64(),
9389
(int) buffer.readUInt32());
@@ -96,7 +92,7 @@ public StyxMessage deserializeMessage(IBufferReader buffer, int io_unit) throws
9692
MetricsAndStats.byteArrayAllocationRRead++;
9793
var data = new byte[dataLength];
9894
buffer.readData(data, 0, dataLength);
99-
result = new StyxRReadMessage(tag,
95+
result = messageFactory.constructRReadMessage(tag,
10096
data,
10197
dataLength);
10298
}
@@ -113,7 +109,7 @@ public StyxMessage deserializeMessage(IBufferReader buffer, int io_unit) throws
113109
0,
114110
0);
115111
}
116-
case MessageType.Rwrite -> result = new StyxRWriteMessage(tag, buffer.readUInt32());
112+
case MessageType.Rwrite -> result = messageFactory.constructRWriteMessage(tag, buffer.readUInt32());
117113
case MessageType.Tclunk -> result = new StyxTMessageFID(
118114
MessageType.Tclunk,
119115
buffer.readUInt32());

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.v2soft.styxlib.exceptions.StyxException;
44
import com.v2soft.styxlib.l5.enums.Checks;
55
import com.v2soft.styxlib.l5.enums.MessageType;
6-
import com.v2soft.styxlib.l5.messages.*;
76
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
87
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
98
import com.v2soft.styxlib.l5.messages.v9p2000.*;

0 commit comments

Comments
 (0)