Index: lib/DispatcherBase_h.template |
diff --git a/lib/DispatcherBase_h.template b/lib/DispatcherBase_h.template |
index 4fb89efafe9706c333fd786392db0f3ddc5b01f6..9838637c59340ed91dbcc0aad51b7697cf5373bf 100644 |
--- a/lib/DispatcherBase_h.template |
+++ b/lib/DispatcherBase_h.template |
@@ -42,6 +42,7 @@ public: |
static DispatchResponse OK(); |
static DispatchResponse Error(const String&); |
static DispatchResponse InternalError(); |
+ static DispatchResponse InvalidParams(const String&); |
static DispatchResponse FallThrough(); |
private: |
@@ -67,16 +68,18 @@ public: |
class {{config.lib.export_macro}} Callback { |
public: |
- Callback(std::unique_ptr<WeakPtr> backendImpl, int callId); |
+ Callback(std::unique_ptr<WeakPtr> backendImpl, int callId, int callbackId); |
virtual ~Callback(); |
void dispose(); |
protected: |
void sendIfActive(std::unique_ptr<protocol::DictionaryValue> partialMessage, const DispatchResponse& response); |
+ void fallThroughIfActive(); |
private: |
std::unique_ptr<WeakPtr> m_backendImpl; |
int m_callId; |
+ int m_callbackId; |
}; |
explicit DispatcherBase(FrontendChannel*); |
@@ -94,9 +97,15 @@ public: |
std::unique_ptr<WeakPtr> weakPtr(); |
+ int nextCallbackId(); |
+ void markFallThrough(int callbackId); |
+ bool lastCallbackFallThrough() { return m_lastCallbackFallThrough; } |
+ |
private: |
FrontendChannel* m_frontendChannel; |
protocol::HashSet<WeakPtr*> m_weakPtrs; |
+ int m_lastCallbackId; |
+ bool m_lastCallbackFallThrough; |
}; |
class {{config.lib.export_macro}} UberDispatcher { |
@@ -106,10 +115,13 @@ public: |
void registerBackend(const String& name, std::unique_ptr<protocol::DispatcherBase>); |
DispatchResponse::Status dispatch(std::unique_ptr<Value> message); |
FrontendChannel* channel() { return m_frontendChannel; } |
+ bool fallThroughForNotFound() { return m_fallThroughForNotFound; } |
+ void setFallThroughForNotFound(bool); |
virtual ~UberDispatcher(); |
private: |
FrontendChannel* m_frontendChannel; |
+ bool m_fallThroughForNotFound; |
protocol::HashMap<String, std::unique_ptr<protocol::DispatcherBase>> m_dispatchers; |
}; |