Printing mailbox locations for vmail list
[hcoop/domtool2.git] / src / msg.sml
index d0d917c..747572a 100644 (file)
@@ -134,6 +134,15 @@ fun send (bio, m) =
        (OpenSSL.writeInt (bio, 20);
         OpenSSL.writeString (bio, domain);
         OpenSSL.writeString (bio, 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 (fn (bio, {user, mailbox}) =>
+                           (OpenSSL.writeString (bio, user);
+                            OpenSSL.writeString (bio, mailbox)))
+        (bio, users))
 
 fun checkIt v =
     case v of
 
 fun checkIt v =
     case v of
@@ -208,6 +217,15 @@ fun recv bio =
                                (SOME domain, SOME user) =>
                                SOME (MsgRmMailbox {domain = domain, user = user})
                              | _ => NONE)
                                (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
                   | _ => NONE)
         
 end