(OpenSSL.writeInt (bio, 20);
OpenSSL.writeString (bio, domain);
OpenSSL.writeString (bio, user))
+ | MsgListMailboxes domain =>
+ (OpenSSL.writeInt (bio, 21);
+ OpenSSL.writeString (bio, domain))
+ | MsgMailboxes users =>
+ (OpenSSL.writeInt (bio, 22);
+ sendList (fn (bio, {user, mailbox}) =>
+ (OpenSSL.writeString (bio, user);
+ OpenSSL.writeString (bio, mailbox)))
+ (bio, users))
fun checkIt v =
case v of
(SOME domain, SOME user) =>
SOME (MsgRmMailbox {domain = domain, user = user})
| _ => NONE)
+ | 21 => Option.map MsgListMailboxes (OpenSSL.readString bio)
+ | 22 => Option.map MsgMailboxes (recvList
+ (fn bio =>
+ case (OpenSSL.readString bio,
+ OpenSSL.readString bio) of
+ (SOME user, SOME mailbox) =>
+ SOME {user = user, mailbox = mailbox}
+ | _ => NONE)
+ bio)
| _ => NONE)
end