summaryrefslogtreecommitdiffstats
path: root/bindings/_common/Xcap.h
diff options
context:
space:
mode:
Diffstat (limited to 'bindings/_common/Xcap.h')
-rw-r--r--bindings/_common/Xcap.h165
1 files changed, 165 insertions, 0 deletions
diff --git a/bindings/_common/Xcap.h b/bindings/_common/Xcap.h
new file mode 100644
index 0000000..0d26f2c
--- /dev/null
+++ b/bindings/_common/Xcap.h
@@ -0,0 +1,165 @@
+/*
+* Copyright (C) 2010-2011 Mamadou Diop.
+*
+* Contact: Mamadou Diop <diopmamadou(at)doubango.org>
+*
+* This file is part of Open Source Doubango Framework.
+*
+* DOUBANGO is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* DOUBANGO is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with DOUBANGO.
+*
+*/
+#ifndef TINYWRAP_XCAP_H
+#define TINYWRAP_XCAP_H
+
+#include "tinyxcap.h"
+
+class XcapStack;
+
+typedef tsk_list_t twrap_xcap_steps_L_t;
+
+//
+// XcapSelector
+//
+class XcapSelector
+{
+public:
+ XcapSelector(XcapStack* stack);
+ virtual ~XcapSelector();
+
+public: /* API functions */
+ XcapSelector* setAUID(const char* auid);
+ XcapSelector* setName(const char* qname);
+ XcapSelector* setAttribute(const char* qname, const char* att_qname, const char* att_value);
+ XcapSelector* setPos(const char* qname, unsigned pos);
+ XcapSelector* setPosAttribute(const char* qname, unsigned pos, const char* att_qname, const char* att_value);
+ XcapSelector* setNamespace(const char* prefix, const char* value);
+
+ char* getString();// %newobject
+ void reset();
+
+private:
+ txcap_stack_handle_t* stack_handle;
+ char* auid;
+ twrap_xcap_steps_L_t* steps;
+};
+
+//
+// XcapMessage
+//
+class XcapMessage
+{
+public:
+ XcapMessage();
+#if !defined(SWIG)
+ XcapMessage(const thttp_message_t *httpmessage);
+#endif
+ virtual ~XcapMessage();
+
+ short getCode() const;
+ const char* getPhrase() const;
+
+ char* getXcapHeaderValue(const char* name, unsigned index = 0);
+ char* getXcapHeaderParamValue(const char* name, const char* param, unsigned index = 0);
+ unsigned getXcapContentLength();
+ unsigned getXcapContent(void* output, unsigned maxsize);
+
+private:
+ const thttp_message_t *httpmessage;
+};
+
+//
+// XcapEvent
+//
+class XcapEvent
+{
+public:
+#if !defined(SWIG)
+ XcapEvent(const thttp_event_t *httpevent);
+#endif
+ virtual ~XcapEvent();
+ thttp_event_type_t getType();
+ const XcapMessage* getXcapMessage() const;
+
+private:
+ const thttp_event_t *httpevent;
+ const XcapMessage* httpmessage;
+};
+
+
+//
+// XcapCallback
+//
+class XcapCallback
+{
+public:
+ XcapCallback();
+ virtual ~XcapCallback();
+
+ virtual int onEvent(const XcapEvent* e)const { return -1; }
+};
+
+
+//
+// XcapStack
+//
+class XcapStack
+{
+public:
+ XcapStack(XcapCallback* callback, const char* xui, const char* password, const char* xcap_root);
+ virtual ~XcapStack();
+
+public: /* API functions */
+ bool registerAUID(const char* id, const char* mime_type, const char* ns, const char* document_name, bool is_global);
+ bool start();
+ bool setCredentials(const char* xui, const char* password);
+ bool setXcapRoot(const char* xcap_root);
+ bool setLocalIP(const char* ip);
+ bool setLocalPort(unsigned port);
+ bool addHeader(const char* name, const char* value);
+ bool removeHeader(const char* name);
+ bool setTimeout(unsigned timeout);
+
+ bool getDocument(const char* url);
+ bool getElement(const char* url);
+ bool getAttribute(const char* url);
+
+ bool deleteDocument(const char* url);
+ bool deleteElement(const char* url);
+ bool deleteAttribute(const char* url);
+
+ bool putDocument(const char* url, const void* payload, unsigned len, const char* contentType);
+ bool putElement(const char* url, const void* payload, unsigned len);
+ bool putAttribute(const char* url, const void* payload, unsigned len);
+
+ bool stop();
+
+public: /* Public helper function */
+#if !defined(SWIG)
+ txcap_stack_handle_t* getHandle(){
+ return this->handle;
+ }
+ XcapCallback* getCallback()const{
+ return this->callback;
+ }
+#endif
+
+private:
+ txcap_stack_handle_t* handle;
+ XcapCallback* callback;
+
+ static unsigned count;
+};
+
+
+#endif /* TINYWRAP_XCAP_H */
OpenPOWER on IntegriCloud