2008/9/4 Tuure Laurinolli <[EMAIL PROTECTED]>
> JianXing Yi wrote:
>
>> 2008/9/4 Tuure Laurinolli <[EMAIL PROTECTED]>
>>
>> JianXing Yi wrote:
>>>
>>> Also, I print state info in SESSION_IDLE event handling every 2 seconds,
>>>> all
>>>> sessions are in a same state (STATE_A). My statemachine expects a
>>>> MESSAGE_SENT event to trigger it transit from STATE_A to STATE_B, it is
>>>> obvious that the session receives no MESSAGE_SENT events any more.
>>>>
>>>> What generates MESSAGE_SENT events? I.e. what doesn't happen (since no
>>> events are generated)?
>>>
>> >
>
>> MESSAGE_SENT event generated by my sending out a message.
>>
>
> How? Show some code.
>
@IoHandlerTransition(in = STATE_GETTING, on = MESSAGE_RECEIVED, next =
STATE_RESULT_GOT)
public void resultGot(IoSession session, CWTPPDU pdu) {
if (pdu.getPDUType() == 2) {
CWTPResult res = (CWTPResult) pdu;
if (!pdu.getTTR()) {
segData = new ByteArrayOutputStream(65536);
try {
segData.write(res.getPayload());
seglast = (short) 0;
StateControl.breakAndGotoNext("state_getting");
} catch (IOException e) {
e.printStackTrace();
}
return;
}
}
if (pdu.getPDUType() == 6) {
CWTPSegmResult segResult = (CWTPSegmResult) pdu;
if (seglast + 1 == segResult.getPSN())
seglast = segResult.getPSN();
if (!segResult.getTTR())
StateControl.breakAndGotoNext("state_getting");
else {
CWTPAck ack = new CWTPAck(pdu.getTID() & 0x7fff);
byte[] payload = new byte[2];
payload[0] = (byte) 25;
payload[1] = (byte) (0x7f & segResult.getPSN());
ack.setCON(true);
ack.setPayload(payload);
session.write(ack);---------------------------------------------------------------->MESSAGE_SENT
generate here
}
}
}
@IoHandlerTransition(in = STATE_RESULT_GOT, on = MESSAGE_SENT, next =
STATE_GETTING)
public void abort(IoSession session, CWTPPDU pdu) {
if (WapGetterContext.numWspSession.get() * 100 / 5000 < 90) {
try {
Thread.sleep(5L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
CWSPGet pdu2 = null;
// if (new Random().nextInt() % 2 == 0) {
pdu2 = new CWSPGet("
http://10.56.135.64/wap-pete/T2000/2kb/index.wml");
// } else {
// pdu2 = new CWSPGet("
http://10.56.135.68/wap-pete/T2000/10kb_LG/10k_2.wml");
// }
CWTPEvent wtpEvent = new CWTPEvent(pdu2.toByteArray(), (byte) 0);
CWTPInvoke send = new CWTPInvoke(wtpEvent.getUserData(),
tid = generateNewTID(), (byte) 2);
session.write(send);
}
>
> Also, have you tried with a different number of sessions? Start with one
>>> and find out if the behabior is the same.
>>>
>> >
>
>> I've tried with a different number of sessions, for example 1000 sessions,
>> and I've not found this behavior yet.
>>
>
> Hmm, interesting.
>