| MsgCreateDbTable {dbtype, dbname} => (OpenSSL.writeInt (bio, 17);
OpenSSL.writeString (bio, dbtype);
OpenSSL.writeString (bio, dbname))
+ | MsgNewMailbox {domain, user, passwd, mailbox} =>
+ (OpenSSL.writeInt (bio, 18);
+ OpenSSL.writeString (bio, domain);
+ OpenSSL.writeString (bio, user);
+ OpenSSL.writeString (bio, passwd);
+ OpenSSL.writeString (bio, mailbox))
+ | MsgPasswdMailbox {domain, user, passwd} =>
+ (OpenSSL.writeInt (bio, 19);
+ OpenSSL.writeString (bio, domain);
+ OpenSSL.writeString (bio, user);
+ OpenSSL.writeString (bio, passwd))
+ | MsgRmMailbox {domain, user} =>
+ (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 OpenSSL.writeString (bio, users))
fun checkIt v =
case v of
(SOME dbtype, SOME dbname) =>
SOME (MsgCreateDbTable {dbtype = dbtype, dbname = dbname})
| _ => NONE)
+ | 18 => (case (OpenSSL.readString bio, OpenSSL.readString bio,
+ OpenSSL.readString bio, OpenSSL.readString bio) of
+ (SOME domain, SOME user, SOME passwd, SOME mailbox) =>
+ SOME (MsgNewMailbox {domain = domain, user = user,
+ passwd = passwd, mailbox = mailbox})
+ | _ => NONE)
+ | 19 => (case (OpenSSL.readString bio, OpenSSL.readString bio,
+ OpenSSL.readString bio) of
+ (SOME domain, SOME user, SOME passwd) =>
+ SOME (MsgPasswdMailbox {domain = domain, user = user,
+ passwd = passwd})
+ | _ => NONE)
+ | 20 => (case (OpenSSL.readString bio, OpenSSL.readString bio) of
+ (SOME domain, SOME user) =>
+ SOME (MsgRmMailbox {domain = domain, user = user})
+ | _ => NONE)
+ | 21 => Option.map MsgListMailboxes (OpenSSL.readString bio)
+ | 22 => Option.map MsgMailboxes (recvList OpenSSL.readString bio)
| _ => NONE)
end