Author: fhanik Date: Tue Mar 7 11:41:44 2006 New Revision: 383977 URL: http://svn.apache.org/viewcvs?rev=383977&view=rev Log: Added in a skeleton for the rcp messaging base
Added: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/Response.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/RpcCallback.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/RpcChannel.java Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ByteMessage.java Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ByteMessage.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ByteMessage.java?rev=383977&r1=383976&r2=383977&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ByteMessage.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ByteMessage.java Tue Mar 7 11:41:44 2006 @@ -16,6 +16,10 @@ package org.apache.catalina.tribes; import java.io.Serializable; +import java.io.Externalizable; +import java.io.ObjectInput; +import java.io.IOException; +import java.io.ObjectOutput; /** * A byte message is not serialized and deserialized by the channel @@ -23,7 +27,7 @@ * @version $Revision: 304032 $, $Date: 2005-07-27 10:11:55 -0500 (Wed, 27 Jul 2005) $ */ -public class ByteMessage implements Serializable { +public class ByteMessage implements Serializable, Externalizable { private byte[] message; public ByteMessage() { @@ -39,6 +43,17 @@ public void setMessage(byte[] message) { this.message = message; + } + + public void readExternal(ObjectInput in ) throws IOException { + int length = in.readInt(); + message = new byte[length]; + in.read(message,0,length); + } + + public void writeExternal(ObjectOutput out) throws IOException { + out.writeInt(message.length); + out.write(message,0,message.length); } } Added: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/Response.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/Response.java?rev=383977&view=auto ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/Response.java (added) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/Response.java Tue Mar 7 11:41:44 2006 @@ -0,0 +1,53 @@ +/* + * Copyright 1999,2004-2006 The Apache Software Foundation. + * + * 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.apache.catalina.tribes.group.tipis; + +import java.io.Serializable; + +import org.apache.catalina.tribes.Member; + +/** + * A response object holds a message from a responding partner. + * @author Filip Hanik + * @version 1.0 + */ +public class Response { + private Member source; + private Serializable message; + public Response() { + } + + public Response(Member source, Serializable message) { + this.source = source; + this.message = message; + } + + public void setSource(Member source) { + this.source = source; + } + + public void setMessage(Serializable message) { + this.message = message; + } + + public Member getSource() { + return source; + } + + public Serializable getMessage() { + return message; + } +} \ No newline at end of file Added: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/RpcCallback.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/RpcCallback.java?rev=383977&view=auto ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/RpcCallback.java (added) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/RpcCallback.java Tue Mar 7 11:41:44 2006 @@ -0,0 +1,44 @@ +/* + * Copyright 1999,2004-2006 The Apache Software Foundation. + * + * 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.apache.catalina.tribes.group.tipis; + +import java.io.Serializable; +import org.apache.catalina.tribes.Member; + +/** + * The RpcCallback interface is an interface for the Tribes channel to request a + * response object to a request that came in. + * @author not attributable + * @version 1.0 + */ +public interface RpcCallback { + + /** + * + * @param msg Serializable + * @return Serializable - null if no reply should be sent + */ + public Serializable replyRequest(Serializable msg, Member sender); + + /** + * If the reply has already been sent to the requesting thread, + * the rpc callback can handle any data that comes in after the fact. + * @param msg Serializable + * @param sender Member + */ + public void leftOver(Serializable msg, Member sender); + +} \ No newline at end of file Added: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/RpcChannel.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/RpcChannel.java?rev=383977&view=auto ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/RpcChannel.java (added) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/tipis/RpcChannel.java Tue Mar 7 11:41:44 2006 @@ -0,0 +1,92 @@ +/* + * Copyright 1999,2004-2006 The Apache Software Foundation. + * + * 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.apache.catalina.tribes.group.tipis; + +import java.io.Serializable; + +import org.apache.catalina.tribes.Channel; +import org.apache.catalina.tribes.ChannelException; +import org.apache.catalina.tribes.Member; + +/** + * A channel to handle RPC messaging + * @author Filip Hanik + */ +public class RpcChannel { + + public static final int FIRST_REPLY = 1; + public static final int MAJORITY_REPLY = 2; + public static final int ALL_REPLY = 3; + + private Channel channel; + private RpcCallback callback; + private String rpcId; + + /** + * Create an RPC channel. You can have several RPC channels attached to a group + * all separated out by the uniqueness + * @param rpcId - the unique Id for this RPC group + * @param channel Channel + * @param callback RpcCallback + */ + public RpcChannel(String rpcId, Channel channel, RpcCallback callback) { + this.channel = channel; + this.callback = callback; + this.rpcId = rpcId; + } + + + /** + * Send a message and wait for the response. + * @param destination Member[] - the destination for the message, and the members you request a reply from + * @param message Serializable - the message you are sending out + * @param options int - FIRST_REPLY, MAJORITY_REPLY or ALL_REPLY + * @param timeout long - timeout in milliseconds, if no reply is received within this time an exception is thrown + * @return Response[] - an array of response objects. + * @throws ChannelException + */ + public Response[] send(Member[] destination, + Serializable message, + int options, + long timeout) throws ChannelException { + throw new UnsupportedOperationException(); + } + + public Channel getChannel() { + return channel; + } + + public RpcCallback getCallback() { + return callback; + } + + public String getRpcId() { + return rpcId; + } + + public void setChannel(Channel channel) { + this.channel = channel; + } + + public void setCallback(RpcCallback callback) { + this.callback = callback; + } + + public void setRpcId(String rpcId) { + this.rpcId = rpcId; + } + +} \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]