Add query for existence of package
[hcoop/domtool2.git] / src / msg.sml
index 19a84b4..0a50b6e 100644 (file)
@@ -23,12 +23,14 @@ structure Msg :> MSG = struct
 open OpenSSL MsgTypes Slave
 
 val a2i = fn Add => 0
-          | Delete => 1
+          | Delete true => 1
           | Modify => 2
+          | Delete false => 3
 
 val i2a = fn 0 => Add
-          | 1 => Delete
+          | 1 => Delete true
           | 2 => Modify
+          | 3 => Delete false
           | _ => raise OpenSSL.OpenSSL "Bad action number to deserialize"
 
 fun sendAcl (bio, {user, class, value}) =
@@ -117,6 +119,8 @@ fun sendQuery (bio, q) =
                      OpenSSL.writeString (bio, s))
       | QFirewall s => (OpenSSL.writeInt (bio, 5);
                        OpenSSL.writeString (bio, s))
+      | QAptExists s => (OpenSSL.writeInt (bio, 6);
+                        OpenSSL.writeString (bio, s))
 
 fun recvQuery bio =
     case OpenSSL.readInt bio of
@@ -128,6 +132,7 @@ fun recvQuery bio =
           | 3 => Option.map QTrustedPath (OpenSSL.readString bio)
           | 4 => Option.map QSocket (OpenSSL.readString bio)
           | 5 => Option.map QFirewall (OpenSSL.readString bio)
+          | 6 => Option.map QAptExists (OpenSSL.readString bio)
           | _ => NONE)
       | NONE => NONE
 
@@ -171,9 +176,10 @@ fun send (bio, m) =
       | MsgCreateDbUser {dbtype, passwd} => (OpenSSL.writeInt (bio, 16);
                                             OpenSSL.writeString (bio, dbtype);
                                             sendOption OpenSSL.writeString (bio, passwd))
-      | MsgCreateDbTable {dbtype, dbname} => (OpenSSL.writeInt (bio, 17);
-                                             OpenSSL.writeString (bio, dbtype);
-                                             OpenSSL.writeString (bio, dbname))
+      | MsgCreateDb {dbtype, dbname, encoding} => (OpenSSL.writeInt (bio, 17);
+                                                  OpenSSL.writeString (bio, dbtype);
+                                                  OpenSSL.writeString (bio, dbname);
+                                                  sendOption OpenSSL.writeString (bio, encoding))
       | MsgNewMailbox {domain, user, passwd, mailbox} =>
        (OpenSSL.writeInt (bio, 18);
         OpenSSL.writeString (bio, domain);
@@ -222,6 +228,20 @@ fun send (bio, m) =
       | MsgFirewall ls => (OpenSSL.writeInt (bio, 34);
                           sendList OpenSSL.writeString (bio, ls))
       | MsgRegenerateTc => OpenSSL.writeInt (bio, 35)
+      | MsgDropDb {dbtype, dbname} => (OpenSSL.writeInt (bio, 36);
+                                      OpenSSL.writeString (bio, dbtype);
+                                      OpenSSL.writeString (bio, dbname))
+      | MsgGrantDb {dbtype, dbname} => (OpenSSL.writeInt (bio, 37);
+                                       OpenSSL.writeString (bio, dbtype);
+                                       OpenSSL.writeString (bio, dbname))
+      | MsgMysqlFixperms => OpenSSL.writeInt (bio, 38)
+      | MsgDescribe dom => (OpenSSL.writeInt (bio, 39);
+                           OpenSSL.writeString (bio, dom))
+      | MsgDescription s => (OpenSSL.writeInt (bio, 40);
+                            OpenSSL.writeString (bio, s))
+      | MsgReUsers => OpenSSL.writeInt (bio, 41)
+      | MsgVmailChanged => OpenSSL.writeInt (bio, 42)
+      | MsgFirewallRegen => OpenSSL.writeInt (bio, 43)
 
 fun checkIt v =
     case v of
@@ -276,9 +296,9 @@ fun recv bio =
                                (SOME dbtype, SOME passwd) =>
                                SOME (MsgCreateDbUser {dbtype = dbtype, passwd = passwd})
                              | _ => NONE)
-                  | 17 => (case (OpenSSL.readString bio, OpenSSL.readString bio) of
-                               (SOME dbtype, SOME dbname) =>
-                               SOME (MsgCreateDbTable {dbtype = dbtype, dbname = dbname})
+                  | 17 => (case (OpenSSL.readString bio, OpenSSL.readString bio, recvOption OpenSSL.readString bio) of
+                               (SOME dbtype, SOME dbname, SOME encoding) =>
+                               SOME (MsgCreateDb {dbtype = dbtype, dbname = dbname, encoding = encoding})
                              | _ => NONE)
                   | 18 => (case (OpenSSL.readString bio, OpenSSL.readString bio,
                                  OpenSSL.readString bio, OpenSSL.readString bio) of
@@ -323,6 +343,20 @@ fun recv bio =
                   | 33 => Option.map MsgSocket (recvSockPerm bio)
                   | 34 => Option.map MsgFirewall (recvList OpenSSL.readString bio)
                   | 35 => SOME MsgRegenerateTc
+                  | 36 => (case (OpenSSL.readString bio, OpenSSL.readString bio) of
+                               (SOME dbtype, SOME dbname) =>
+                               SOME (MsgDropDb {dbtype = dbtype, dbname = dbname})
+                             | _ => NONE)
+                  | 37 => (case (OpenSSL.readString bio, OpenSSL.readString bio) of
+                               (SOME dbtype, SOME dbname) =>
+                               SOME (MsgGrantDb {dbtype = dbtype, dbname = dbname})
+                             | _ => NONE)
+                  | 38 => SOME MsgMysqlFixperms
+                  | 39 => Option.map MsgDescribe (OpenSSL.readString bio)
+                  | 40 => Option.map MsgDescription (OpenSSL.readString bio)
+                  | 41 => SOME MsgReUsers
+                  | 42 => SOME MsgVmailChanged
+                  | 43 => SOME MsgFirewallRegen
                   | _ => NONE)
         
 end