ネットワークプログラミング相談室 Port24
レス数が950を超えています。1000を超えると書き込みができなくなります。
0951938
2009/10/10(土) 10:01:02RecvAcceptorState state = STATE_WAIT_TYPE; // 初期状態はType待ち
void recv_acceptor() // recvイベント発生に呼ばれるコールバック関数
{
while (buf.size() > 0) {
byte = buf.pop(1)
switch (state) {
case STATE_WAIT_TYPE: // Type待ち状態
tlv.type = byte; // Type値が決定
state = STATE_WAIT_LEGTH; // 次の状態(Length待ち)へ遷移
break;
case STATE_WAIT_LENGTH: // Length待ち状態
tlv.length = byte; // Length値が決定(Lengthフィールドが1byte固定である事を仮定)
value_counter = tlv.length; // 受信カウンタをLength値で初期化
state = STATE_PROCESS_VALUE; // 次の状態(Value処理中)へ遷移
break;
case STATE_PROCESS_VALUE: // Value処理中状態
:
if (メッセージ組立て完了) {
: // 受信メッセージ処理のアクションを起動する
: // もし階層的なTLV構造であれば、>>947のメッセージ解析処理を呼ぶ
state = STATE_WAIT_TYPE; // 初期状態へ遷移(必要であれば他の再初期化処理も)
}
:
break;
}
}
}
(更に続く)
レス数が950を超えています。1000を超えると書き込みができなくなります。