Testing queries on slave servers
[hcoop/domtool2.git] / src / msg.sml
index 1d168af..5bf11f3 100644 (file)
@@ -88,6 +88,19 @@ fun recvBool bio =
       | 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)
@@ -162,6 +175,18 @@ fun send (bio, m) =
       | MsgSaSet (addr, b) => (OpenSSL.writeInt (bio, 25);
                               OpenSSL.writeString (bio, addr);
                               sendBool (bio, b))
+      | MsgSmtpLogReq domain => (OpenSSL.writeInt (bio, 26);
+                                OpenSSL.writeString (bio, domain))
+      | MsgSmtpLogRes domain => (OpenSSL.writeInt (bio, 27);
+                                OpenSSL.writeString (bio, domain))
+      | MsgDbPasswd {dbtype, passwd} => (OpenSSL.writeInt (bio, 28);
+                                        OpenSSL.writeString (bio, dbtype);
+                                        OpenSSL.writeString (bio, passwd))
+      | MsgShutdown => OpenSSL.writeInt (bio, 29)
+      | MsgYes => OpenSSL.writeInt (bio, 30)
+      | MsgNo => OpenSSL.writeInt (bio, 31)
+      | MsgQuery q => (OpenSSL.writeInt (bio, 32);
+                      sendQuery (bio, q))
 
 fun checkIt v =
     case v of
@@ -250,6 +275,16 @@ fun recv bio =
                   | 25 => (case (OpenSSL.readString bio, recvBool bio) of
                                (SOME user, SOME b) => SOME (MsgSaSet (user, b))
                              | _ => NONE)
+                  | 26 => Option.map MsgSmtpLogReq (OpenSSL.readString bio)
+                  | 27 => Option.map MsgSmtpLogRes (OpenSSL.readString bio)
+                  | 28 => (case (OpenSSL.readString bio, OpenSSL.readString bio) of
+                               (SOME dbtype, SOME passwd) =>
+                               SOME (MsgDbPasswd {dbtype = dbtype, passwd = passwd})
+                             | _ => NONE)
+                  | 29 => SOME MsgShutdown
+                  | 30 => SOME MsgYes
+                  | 31 => SOME MsgNo
+                  | 32 => Option.map MsgQuery (recvQuery bio)
                   | _ => NONE)
         
 end