EMMA Coverage Report (generated Tue Oct 27 11:32:50 PDT 2009)
[all classes][net.spy.memcached.protocol]

COVERAGE SUMMARY FOR SOURCE FILE [ProxyCallback.java]

nameclass, %method, %block, %line, %
ProxyCallback.java100% (1/1)100% (8/8)91%  (135/149)98%  (25.4/26)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ProxyCallback100% (1/1)100% (8/8)91%  (135/149)98%  (25.4/26)
gotData (String, int, byte []): void 100% (1/1)69%  (27/39)89%  (4.4/5)
<static initializer> 100% (1/1)75%  (6/8)75%  (0.8/1)
ProxyCallback (): void 100% (1/1)100% (13/13)100% (3/3)
addCallbacks (GetOperation): void 100% (1/1)100% (50/50)100% (10/10)
complete (): void 100% (1/1)100% (15/15)100% (3/3)
numCallbacks (): int 100% (1/1)100% (4/4)100% (1/1)
numKeys (): int 100% (1/1)100% (4/4)100% (1/1)
receivedStatus (OperationStatus): void 100% (1/1)100% (16/16)100% (3/3)

1/**
2 *
3 */
4package net.spy.memcached.protocol;
5 
6import java.util.ArrayList;
7import java.util.Collection;
8import java.util.HashMap;
9import java.util.Map;
10 
11import net.spy.memcached.ops.GetOperation;
12import net.spy.memcached.ops.OperationStatus;
13 
14/**
15 * Proxy callback used for dispatching callbacks over optimized gets.
16 */
17public class ProxyCallback implements GetOperation.Callback {
18 
19        private final Map<String, Collection<GetOperation.Callback>> callbacks=
20                new HashMap<String, Collection<GetOperation.Callback>>();
21        private final Collection<GetOperation.Callback> allCallbacks=
22                new ArrayList<GetOperation.Callback>();
23 
24        public void addCallbacks(GetOperation o) {
25                GetOperation.Callback c=new GetCallbackWrapper(o.getKeys().size(),
26                                (GetOperation.Callback)o.getCallback());
27                allCallbacks.add(c);
28                for(String s : o.getKeys()) {
29                        Collection<GetOperation.Callback> cbs=callbacks.get(s);
30                        if(cbs == null) {
31                                cbs=new ArrayList<GetOperation.Callback>();
32                                callbacks.put(s, cbs);
33                        }
34                        cbs.add(c);
35                }
36        }
37 
38        public void gotData(String key, int flags, byte[] data) {
39                Collection<GetOperation.Callback> cbs=callbacks.get(key);
40                assert cbs != null : "No callbacks for key " + key;
41                for(GetOperation.Callback c : cbs) {
42                        c.gotData(key, flags, data);
43                }
44        }
45 
46        public void receivedStatus(OperationStatus status) {
47                for(GetOperation.Callback c : allCallbacks) {
48                        c.receivedStatus(status);
49                }
50        }
51 
52        public void complete() {
53                for(GetOperation.Callback c : allCallbacks) {
54                        c.complete();
55                }
56        }
57 
58        public int numKeys() {
59                return callbacks.size();
60        }
61 
62        public int numCallbacks() {
63                return allCallbacks.size();
64        }
65}

[all classes][net.spy.memcached.protocol]
EMMA 2.0.5312 (C) Vladimir Roubtsov