/******************************************************************************
*
* Copyright 2011-2012 Tavendo GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
package org.magnum.soda.transport.wamp;
/**
* The master thread and the background reader/writer threads communicate
* using these messages for Autobahn WAMP connections.
*/
public class WampMessage {
public static final int MESSAGE_TYPE_WELCOME = 0;
public static final int MESSAGE_TYPE_PREFIX = 1;
public static final int MESSAGE_TYPE_CALL = 2;
public static final int MESSAGE_TYPE_CALL_RESULT = 3;
public static final int MESSAGE_TYPE_CALL_ERROR = 4;
public static final int MESSAGE_TYPE_SUBSCRIBE = 5;
public static final int MESSAGE_TYPE_UNSUBSCRIBE = 6;
public static final int MESSAGE_TYPE_PUBLISH = 7;
public static final int MESSAGE_TYPE_EVENT = 8;
/// Base message class.
public static class Message extends WebSocketMessage.Message {
}
/**
* RPC request message.
* Client-to-server message.
*/
public static class Call extends Message {
public String mCallId;
public String mProcUri;
public Object[] mArgs;
public Call(String callId, String procUri, int argCount) {
mCallId = callId;
mProcUri = procUri;
mArgs = new Object[argCount];
}
}
/**
* RPC success response message.
* Server-to-client message.
*/
public static class CallResult extends Message {
public String mCallId;
public Object mResult;
public CallResult(String callId, Object result) {
mCallId = callId;
mResult = result;
}
}
/**
* RPC failure response message.
* Server-to-client message.
*/
public static class CallError extends Message {
public String mCallId;
public String mErrorUri;
public String mErrorDesc;
public CallError(String callId, String errorUri, String errorDesc) {
mCallId = callId;
mErrorUri = errorUri;
mErrorDesc = errorDesc;
}
}
/**
* Define Welcome message.
* Server-to-client message.
*/
public static class Welcome extends Message {
public String mSessionId;
public int mProtocolVersion;
public String mServerIdent;
public Welcome(String sessionId, int protocolVersion, String serverIdent) {
mSessionId = sessionId;
mProtocolVersion = protocolVersion;
mServerIdent = serverIdent;
}
}
/**
* Define CURIE message.
* Server-to-client and client-to-server message.
*/
public static class Prefix extends Message {
public String mPrefix;
public String mUri;
public Prefix(String prefix, String uri) {
mPrefix = prefix;
mUri = uri;
}
}
/**
* Publish to topic URI request message.
* Client-to-server message.
*/
public static class Publish extends Message {
public String mTopicUri;
public Object mEvent;
public Publish(String topicUri, Object event) {
mTopicUri = topicUri;
mEvent = event;
}
}
/**
* Subscribe to topic URI request message.
* Client-to-server message.
*/
public static class Subscribe extends Message {
public String mTopicUri;
public Subscribe(String topicUri) {
mTopicUri = topicUri;
}
}
/**
* Unsubscribe from topic URI request message.
* Client-to-server message.
*/
public static class Unsubscribe extends Message {
public String mTopicUri;
public Unsubscribe(String topicUri) {
mTopicUri = topicUri;
}
}
/**
* Event on topic URI message.
* Server-to-client message.
*/
public static class Event extends Message {
public String mTopicUri;
public Object mEvent;
public Event(String topicUri, Object event) {
mTopicUri = topicUri;
mEvent = event;
}
}
}