src/server/webdav/operation.h

branch
webdav
changeset 239
d5031c30022c
parent 237
ee1680ef1ef2
child 241
4adad7faf452
--- a/src/server/webdav/operation.h	Sat Jan 25 09:00:27 2020 +0100
+++ b/src/server/webdav/operation.h	Sat Jan 25 11:16:55 2020 +0100
@@ -35,21 +35,26 @@
 extern "C" {
 #endif
 
+typedef int(*response_close_func)(WebdavOperation *, WebdavResource *);
+    
 struct WebdavOperation {
-    WebdavBackend    *dav;
-    Request          *rq;
-    Session          *sn;
+    WebdavBackend          *dav;
+    Request                *rq;
+    Session                *sn;
     
-    WebdavPList      *reqprops;     /* requested properties */
-    UcxList          *requests;     /* backend specific request objects */
+    WebdavProppatchRequest *request;      /* proppatch request or NULL */
+    WebdavPList            *reqprops;     /* requested properties */
+    UcxList                *requests;     /* backend specific request objects */
     
-    WebdavResponse   *response;
+    WebdavResponse         *response;
     
-    VFS_DIR          parent;        /* current directory */
-    struct stat      *stat;         /* current stat object */
+    response_close_func    response_close;
+    
+    VFS_DIR                parent;        /* current directory */
+    struct stat            *stat;         /* current stat object */
 };
 
-WebdavOperation* webdav_operation_create(
+WebdavOperation* webdav_create_propfind_operation(
         Session *sn,
         Request *rq,
         WebdavBackend *dav,
@@ -75,6 +80,17 @@
 
 int webdav_op_propfind_finish(WebdavOperation *op);
 
+WebdavOperation* webdav_create_proppatch_operation(
+        Session *sn,
+        Request *rq,
+        WebdavBackend *dav,
+        WebdavProppatchRequest *proppatch,
+        WebdavResponse *response);
+
+int webdav_op_proppatch_close_resource(
+        WebdavOperation *op,
+        WebdavResource *resource);
+
 #ifdef __cplusplus
 }
 #endif

mercurial