| SOME 1 => SOME true
| _ => NONE
+fun sendQuery (bio, q) =
+ case q of
+ QApt s => (OpenSSL.writeInt (bio, 0);
+ OpenSSL.writeString (bio, s))
+
+fun recvQuery bio =
+ case OpenSSL.readInt bio of
+ SOME n =>
+ (case n of
+ 0 => Option.map QApt (OpenSSL.readString bio)
+ | _ => NONE)
+ | NONE => NONE
+
fun send (bio, m) =
case m of
MsgOk => OpenSSL.writeInt (bio, 1)
| MsgShutdown => OpenSSL.writeInt (bio, 29)
| MsgYes => OpenSSL.writeInt (bio, 30)
| MsgNo => OpenSSL.writeInt (bio, 31)
- | MsgApt s => (OpenSSL.writeInt (bio, 32);
- OpenSSL.writeString (bio, s))
+ | MsgQuery q => (OpenSSL.writeInt (bio, 32);
+ sendQuery (bio, q))
fun checkIt v =
case v of
| 29 => SOME MsgShutdown
| 30 => SOME MsgYes
| 31 => SOME MsgNo
- | 32 => Option.map MsgApt (OpenSSL.readString bio)
+ | 32 => Option.map MsgQuery (recvQuery bio)
| _ => NONE)
end