diff Plugins/OrthancCPlugin/OrthancCPlugin.h @ 894:690aeb4cb899 plugins

REST callbacks
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 16 Jun 2014 17:31:09 +0200
parents d44b845c1c89
children c4053ac5db04
line wrap: on
line diff
--- a/Plugins/OrthancCPlugin/OrthancCPlugin.h	Mon Jun 16 16:14:56 2014 +0200
+++ b/Plugins/OrthancCPlugin/OrthancCPlugin.h	Mon Jun 16 17:31:09 2014 +0200
@@ -55,30 +55,61 @@
 {
 #endif
 
-  typedef void (*OrthancPluginLogError) (const char* str);
+  typedef struct OrthancRestOutput_t OrthancRestOutput;
+
+  typedef enum
+  {
+    OrthancHttpMethod_Get = 1,
+    OrthancHttpMethod_Post = 2,
+    OrthancHttpMethod_Put = 3,
+    OrthancHttpMethod_Delete = 4
+  } OrthancHttpMethod;
 
-  typedef void (*OrthancPluginLogWarning) (const char* str);
+  typedef struct OrthancRestUrl_t
+  {
+    const char* path;
+    const char* const* components;
+    uint32_t componentsSize;
+    const char* const* parameters;
+    uint32_t parametersSize;                                          
+  } OrthancRestUrl;
 
-  typedef void (*OrthancPluginLogInfo) (const char* str);
 
   typedef int32_t (*OrthancPluginService) (const char* serviceName,
                                            const void* serviceParameters);
 
-  typedef struct OrthancPluginContext
+  typedef int32_t (*OrthancRestCallback) (OrthancRestOutput* output,
+                                          OrthancHttpMethod method,
+                                          const OrthancRestUrl* url,
+                                          const char* body,
+                                          uint32_t bodySize);
+
+  typedef struct OrthancPluginContext_t
   {
+    void* pimpl;
+
     const char* orthancVersion;
-    OrthancPluginService InvokeService;
-    OrthancPluginLogError LogError;
-    OrthancPluginLogWarning LogWarning;
-    OrthancPluginLogInfo LogInfo;
+    void (*FreeBuffer) (void* buffer);
+
+    /* Logging functions */
+    void (*LogError) (const char* str);
+    void (*LogWarning) (const char* str);
+    void (*LogInfo) (const char* str);
 
-    /* TODO REGISTER */
+    /* REST API */
+    void (*RegisterRestCallback) (const struct OrthancPluginContext_t* context,
+                                  const char* path, 
+                                  OrthancRestCallback callback);
 
+    void (*AnswerBuffer) (OrthancRestOutput* output,
+                          const char* answer,
+                          uint32_t answerSize,
+                          const char* mimeType);
   } OrthancPluginContext;
 
 
   /**
-     Each plugin must define 4 functions, whose signature is:
+     Each plugin must define 4 functions, whose signature are:
      - int32_t OrthancPluginInitialize(const OrthancPluginContext*);
      - void OrthancPluginFinalize();
      - const char* OrthancPluginGetName();