| Index: lib/DispatcherBase_h.template
|
| diff --git a/lib/DispatcherBase_h.template b/lib/DispatcherBase_h.template
|
| index 17fd8708abdb76944afafdac03ff0db0df11df46..4fb89efafe9706c333fd786392db0f3ddc5b01f6 100644
|
| --- a/lib/DispatcherBase_h.template
|
| +++ b/lib/DispatcherBase_h.template
|
| @@ -5,7 +5,6 @@
|
| #ifndef {{"_".join(config.protocol.namespace)}}_DispatcherBase_h
|
| #define {{"_".join(config.protocol.namespace)}}_DispatcherBase_h
|
|
|
| -//#include "BackendCallback.h"
|
| //#include "Collections.h"
|
| //#include "ErrorSupport.h"
|
| //#include "Forward.h"
|
| @@ -17,10 +16,44 @@ namespace {{namespace}} {
|
|
|
| class WeakPtr;
|
|
|
| +class {{config.lib.export_macro}} DispatchResponse {
|
| +public:
|
| + enum Status {
|
| + kSuccess = 0,
|
| + kError = 1,
|
| + kFallThrough = 2,
|
| + kAsync = 3
|
| + };
|
| +
|
| + enum ErrorCode {
|
| + kParseError = -32700,
|
| + kInvalidRequest = -32600,
|
| + kMethodNotFound = -32601,
|
| + kInvalidParams = -32602,
|
| + kInternalError = -32603,
|
| + kServerError = -32000,
|
| + };
|
| +
|
| + Status status() const { return m_status; }
|
| + const String& errorMessage() const { return m_errorMessage; }
|
| + ErrorCode errorCode() const { return m_errorCode; }
|
| + bool isSuccess() const { return m_status == kSuccess; }
|
| +
|
| + static DispatchResponse OK();
|
| + static DispatchResponse Error(const String&);
|
| + static DispatchResponse InternalError();
|
| + static DispatchResponse FallThrough();
|
| +
|
| +private:
|
| + Status m_status;
|
| + String m_errorMessage;
|
| + ErrorCode m_errorCode;
|
| +};
|
| +
|
| class {{config.lib.export_macro}} DispatcherBase {
|
| PROTOCOL_DISALLOW_COPY(DispatcherBase);
|
| public:
|
| - static const char kInvalidRequest[];
|
| + static const char kInvalidParamsString[];
|
| class {{config.lib.export_macro}} WeakPtr {
|
| public:
|
| explicit WeakPtr(DispatcherBase*);
|
| @@ -32,14 +65,14 @@ public:
|
| DispatcherBase* m_dispatcher;
|
| };
|
|
|
| - class {{config.lib.export_macro}} Callback : public protocol::BackendCallback {
|
| + class {{config.lib.export_macro}} Callback {
|
| public:
|
| Callback(std::unique_ptr<WeakPtr> backendImpl, int callId);
|
| virtual ~Callback();
|
| void dispose();
|
|
|
| protected:
|
| - void sendIfActive(std::unique_ptr<protocol::DictionaryValue> partialMessage, const ErrorString& invocationError);
|
| + void sendIfActive(std::unique_ptr<protocol::DictionaryValue> partialMessage, const DispatchResponse& response);
|
|
|
| private:
|
| std::unique_ptr<WeakPtr> m_backendImpl;
|
| @@ -49,24 +82,14 @@ public:
|
| explicit DispatcherBase(FrontendChannel*);
|
| virtual ~DispatcherBase();
|
|
|
| - enum CommonErrorCode {
|
| - ParseError = -32700,
|
| - InvalidRequest = -32600,
|
| - MethodNotFound = -32601,
|
| - InvalidParams = -32602,
|
| - InternalError = -32603,
|
| - ServerError = -32000,
|
| - };
|
| -
|
| static bool getCommandName(const String& message, String* result);
|
|
|
| - virtual void dispatch(int callId, const String& method, std::unique_ptr<protocol::DictionaryValue> messageObject) = 0;
|
| + virtual DispatchResponse::Status dispatch(int callId, const String& method, std::unique_ptr<protocol::DictionaryValue> messageObject) = 0;
|
|
|
| - void sendResponse(int callId, const ErrorString&, ErrorSupport*, std::unique_ptr<protocol::DictionaryValue> result);
|
| - void sendResponse(int callId, const ErrorString&, std::unique_ptr<protocol::DictionaryValue> result);
|
| - void sendResponse(int callId, const ErrorString&);
|
| + void sendResponse(int callId, const DispatchResponse&, std::unique_ptr<protocol::DictionaryValue> result);
|
| + void sendResponse(int callId, const DispatchResponse&);
|
|
|
| - void reportProtocolError(int callId, CommonErrorCode, const String& errorMessage, ErrorSupport* errors);
|
| + void reportProtocolError(int callId, DispatchResponse::ErrorCode, const String& errorMessage, ErrorSupport* errors);
|
| void clearFrontend();
|
|
|
| std::unique_ptr<WeakPtr> weakPtr();
|
| @@ -81,7 +104,7 @@ class {{config.lib.export_macro}} UberDispatcher {
|
| public:
|
| explicit UberDispatcher(FrontendChannel*);
|
| void registerBackend(const String& name, std::unique_ptr<protocol::DispatcherBase>);
|
| - void dispatch(std::unique_ptr<Value> message);
|
| + DispatchResponse::Status dispatch(std::unique_ptr<Value> message);
|
| FrontendChannel* channel() { return m_frontendChannel; }
|
| virtual ~UberDispatcher();
|
|
|
|
|