Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 /* ************************************************************************
 #
 #  DivConq
 #
 #  http://divconq.com/
 #
 #  Copyright:
 #    Copyright 2014 eTimeline, LLC. All rights reserved.
 #
#  License:
#    See the license.txt file in the project's top-level directory for details.
#  Authors:
#    * Andy White
************************************************************************ */
package divconq.api;
public class ReplyService {
	protected AtomicLong nextTag = new AtomicLong();
	public void handle(Message msg) {
		String tag = msg.getFieldAsString("Tag");
		if (tag == null)
			return;
		ServiceResult resp = this..remove(tag);
		// we need to restore the local operation context
		// which happens naturally via .completed()
		if (resp != null
			try {
				resp.setReply(msg);
				resp.complete();
			}
			catch (Exception x) {	
				// TODO log
			}
		return;
	}
	public void registerForReply(Message msgServiceResult resp) {
		String tag = this..getAndIncrement() + "";	
		msg.setField("RespondTo""Replies");
		msg.setField("RespondTag"tag);
		resp.setReplyTag(tag);
		this..put(tagresp);
	}
	public void registerForReplySerial(Message msgServiceResult resp) {
		String tag = "SendWait";	
		msg.setField("RespondTo""Replies");
		msg.setField("RespondTag"tag);
		resp.setReplyTag(tag);
		this..put(tagresp);
	}
	// "RespondTag" header
	public void clearReply(String tag) {
		this..remove(tag);
	}
	public int size() {
		return this..size();
	}
	public void forgetReplyAll() {
		for (ServiceResult resp : this..values()) {
			try {
				resp.error("Session disconnect, response is lost");
				resp.complete();
			}
			catch(Exception x) {
				// TODO log
			}
		}
		this..clear();
	}
New to GrepCode? Check out our FAQ X