/* * Hunt - A redis client library for D programming language. * * Copyright (C) 2018-2019 HuntLabs * * Website: https://www.huntlabs.net/ * * Licensed under the Apache-2.0 License. * */ module hunt.redis.Queable; import hunt.redis.Builder; import hunt.redis.Response; import hunt.collection.LinkedList; import hunt.collection.Queue; class Queable { private Queue!AbstractResponse pipelinedResponses; this() { pipelinedResponses = new LinkedList!AbstractResponse(); } protected void clean() { pipelinedResponses.clear(); } protected AbstractResponse generateResponse(Object data) { AbstractResponse response = pipelinedResponses.poll(); if (response !is null) { response.set(data); } return response; } protected Response!(T) getResponse(T)(Builder!(T) builder) { Response!(T) lr = new Response!(T)(builder); pipelinedResponses.add(lr); return lr; } bool hasPipelinedResponse() { return !pipelinedResponses.isEmpty(); } protected int getPipelinedResponseLength() { return pipelinedResponses.size(); } }