Skip to content

Commit fed4403

Browse files
authored
Merge pull request #39 from vshcryabets/fix/simplify-response-logic
Update response handling logic
2 parents c36ff93 + 9c8369d commit fed4403

39 files changed

Lines changed: 155 additions & 166 deletions

java/v2styx-console-client/src/main/java/com/v2soft/styxlib/StyxConsoleClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import com.v2soft.styxlib.server.tcp.TCPClientChannelDriver;
1212
import com.v2soft.styxlib.server.tcp.TCPServerChannelDriver;
1313
import com.v2soft.styxlib.utils.StyxSessionDI;
14-
import com.v2soft.styxlib.utils.StyxSessionDIImpl;
14+
import com.v2soft.styxlib.utils.impl.StyxSessionDIImpl;
1515
import org.jline.reader.LineReader;
1616
import org.jline.reader.LineReaderBuilder;
1717
import org.jline.terminal.Terminal;

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ public interface IMessageTransmitter {
1414
int getErrorsCount();
1515
void clearStatistics();
1616
void close();
17-
<R extends StyxMessage> Future<R> sendMessage(StyxMessage answer,
18-
int clientId,
19-
long timeout) throws StyxException;
17+
<R extends StyxMessage> Future<R> sendMessage(StyxMessage message,
18+
int clientId) throws StyxException;
2019
}

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

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

3+
import com.v2soft.styxlib.Logger;
34
import com.v2soft.styxlib.exceptions.StyxException;
45
import com.v2soft.styxlib.l5.enums.MessageType;
56
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
6-
import com.v2soft.styxlib.l5.messages.base.StyxTMessage;
77
import com.v2soft.styxlib.l5.messages.base.StyxTMessageFID;
88
import com.v2soft.styxlib.server.ClientsRepo;
99

10-
import java.util.Map;
11-
1210
/**
1311
* @author V.Shcryabets <a>vshcryabets@gmail.com</a>
1412
*/
@@ -34,21 +32,18 @@ public void processPacket(StyxMessage message, int clientId) {
3432
int tag = message.getTag();
3533
try {
3634
final var polls = mClientsRepo.getPolls(clientId);
37-
final Map<Integer, StyxTMessage> clientMessagesMap = polls.getMessagesMap();
38-
if (!clientMessagesMap.containsKey(tag)) {
39-
// we didn't send T message with such tag, so ignore this R message
40-
System.err.printf("%d\tGot (%s) unknown R message from client %d\n", System.currentTimeMillis(),
41-
mTag,
42-
clientId);
43-
return;
44-
}
45-
final StyxTMessage tMessage = clientMessagesMap.get(tag);
46-
// TODO i'm not sure that this is proper place for that logic
47-
if (tMessage.type == MessageType.Tclunk ||
48-
tMessage.type == MessageType.Tremove) {
49-
polls.releaseFID((StyxTMessageFID) tMessage);
35+
polls.assignAnswer(tag, message);
36+
if (message.getType() == MessageType.Rclunk ||
37+
message.getType() == MessageType.Rremove) {
38+
if (message instanceof StyxTMessageFID) {
39+
polls.releaseFID(((StyxTMessageFID) message).mFID);
40+
} else {
41+
// Log or handle the unexpected message type
42+
Logger.e(RMessagesProcessor.class.getSimpleName(),
43+
"Warning: Message type " + message.getType() +
44+
" does not support FID release.");
45+
}
5046
}
51-
tMessage.setAnswer(message);
5247
polls.releaseTag(tag);
5348
} catch (StyxException e) {
5449
e.printStackTrace();

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import com.v2soft.styxlib.l5.enums.Constants;
66
import com.v2soft.styxlib.l5.enums.MessageType;
77
import com.v2soft.styxlib.l5.messages.base.StyxMessage;
8-
import com.v2soft.styxlib.l5.messages.base.StyxTMessage;
98
import com.v2soft.styxlib.server.ClientsRepo;
109
import com.v2soft.styxlib.utils.Future;
1110

@@ -30,9 +29,7 @@ public TMessageTransmitter(Listener listener, ClientsRepo clientsRepo) {
3029
@Override
3130
public <R extends StyxMessage> Future<R> sendMessage(
3231
StyxMessage message,
33-
int clientId,
34-
long timeout
35-
)
32+
int clientId)
3633
throws StyxException {
3734
if ( !Checks.isTMessage(message.getType())) {
3835
throw new StyxException("Can't sent RMessage");
@@ -47,12 +44,11 @@ public <R extends StyxMessage> Future<R> sendMessage(
4744
// set message tag
4845
int tag = Constants.NOTAG;
4946
if (message.getType() != MessageType.Tversion) {
50-
tag = mClientsRepo.getPolls(clientId).getTagPoll().getFreeItem();
47+
tag = polls.getTagPoll().getFreeItem();
5148
}
5249
message.setTag((short) tag);
53-
polls.getMessagesMap().put(tag, (StyxTMessage) message);
5450
mTransmittedCount++;
55-
return driver.sendMessage(message, clientId, timeout);
51+
return driver.sendMessage(message, clientId);
5652
}
5753

5854
@Override

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
@@ -129,7 +129,7 @@ public void processPacket(StyxMessage message, int clientId) throws StyxExceptio
129129
}
130130
if (answer != null) {
131131
mAnswerPackets++;
132-
mDi.getClientsRepo().getDriver(clientId).sendMessage(answer, clientId, 0);
132+
mDi.getClientsRepo().getDriver(clientId).sendMessage(answer, clientId);
133133
}
134134
}
135135

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -181,14 +181,13 @@ public void sendVersionMessage()
181181
throws StyxException {
182182
// release attached FID
183183
if (mRootFid != Constants.NOFID) {
184-
final StyxTMessageFID tClunk = new StyxTMessageFID(MessageType.Tclunk, MessageType.Rclunk, mRootFid);
185-
mConfiguration.transmitter.sendMessage(tClunk, mClientId, mTimeout).getResult();
184+
final StyxTMessageFID tClunk = new StyxTMessageFID(MessageType.Tclunk, mRootFid);
185+
mConfiguration.transmitter.sendMessage(tClunk, mClientId).getResult(mTimeout);
186186
mRootFid = Constants.NOFID;
187187
}
188188
StyxMessage rMessage = mConfiguration.transmitter.sendMessage(
189189
mConfiguration.di.getMessageFactory().constructTVersion(mDetails.ioUnit(), getProtocol()),
190-
mClientId,
191-
mTimeout).getResult();
190+
mClientId).getResult(mTimeout);
192191
StyxRVersionMessage rVersion = (StyxRVersionMessage) rMessage;
193192
if (rVersion.maxPacketSize < mDetails.ioUnit()) {
194193
mDetails = new ConnectionDetails(getProtocol(), (int) rVersion.maxPacketSize);
@@ -205,7 +204,7 @@ private void sendAuthMessage()
205204

206205
StyxMessage tAuth = mConfiguration.di.getMessageFactory().constructTAuth(mAuthFID,
207206
mConfiguration.credentials.getUserName(), getMountPoint());
208-
StyxMessage rMessage = mConfiguration.transmitter.sendMessage(tAuth, mClientId, mTimeout).getResult();
207+
StyxMessage rMessage = mConfiguration.transmitter.sendMessage(tAuth, mClientId).getResult(mTimeout);
209208
StyxRAuthMessage rAuth = (StyxRAuthMessage) rMessage;
210209
mAuthQID = rAuth.getQID();
211210

@@ -220,8 +219,9 @@ private void sendAuthMessage()
220219
StyxMessage tAttach = mConfiguration.di.getMessageFactory().constructTAttach(mRootFid, getAuthFID(),
221220
mConfiguration.credentials.getUserName(),
222221
getMountPoint());
223-
var rAttach = (StyxRAttachMessage)mConfiguration.transmitter.sendMessage(tAttach, mClientId, mTimeout)
224-
.getResult();
222+
var rAttach = (StyxRAttachMessage)mConfiguration.transmitter
223+
.sendMessage(tAttach, mClientId)
224+
.getResult(mTimeout);
225225
mQID = rAttach.getQID();
226226
setAttached(true);
227227
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class StyxTCreateMessage extends StyxTMessageFID {
99
public final int mode;
1010

1111
public StyxTCreateMessage(long fid, String name, long permissions, int mode) {
12-
super(MessageType.Tcreate, MessageType.Rcreate, fid);
12+
super(MessageType.Tcreate, fid);
1313
this.name = name;
1414
this.permissions = permissions;
1515
this.mode = mode;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public class StyxTFlushMessage extends StyxTMessage {
77
public final int oldTag;
88

99
public StyxTFlushMessage(int tag){
10-
super(MessageType.Tflush, MessageType.Rflush);
10+
super(MessageType.Tflush);
1111
oldTag = tag;
1212
}
1313

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public class StyxTOpenMessage extends StyxTMessageFID {
77
public final int mode;
88

99
public StyxTOpenMessage(long fid, int mode) {
10-
super(MessageType.Topen, MessageType.Ropen, fid);
10+
super(MessageType.Topen, fid);
1111
this.mode = mode;
1212
}
1313

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class StyxTReadMessage extends StyxTMessageFID {
88
public final int count;
99

1010
public StyxTReadMessage(long fid, long offset, int count) {
11-
super(MessageType.Tread, MessageType.Rread, fid);
11+
super(MessageType.Tread, fid);
1212
this.offset = offset;
1313
this.count = count;
1414
}

0 commit comments

Comments
 (0)