示例#1
0
 private void process(Client client) {
   do {
     List<Object> reply = client.getObjectMultiBulkReply();
     final Object firstObj = reply.get(0);
     if (!(firstObj instanceof byte[])) {
       throw new JedisException("Unknown message type: " + firstObj);
     }
     final byte[] resp = (byte[]) firstObj;
     if (Arrays.equals(SUBSCRIBE.raw, resp)) {
       subscribedChannels = ((Long) reply.get(2)).intValue();
       final byte[] bchannel = (byte[]) reply.get(1);
       final String strchannel = (bchannel == null) ? null : SafeEncoder.encode(bchannel);
       onSubscribe(strchannel, subscribedChannels);
     } else if (Arrays.equals(UNSUBSCRIBE.raw, resp)) {
       subscribedChannels = ((Long) reply.get(2)).intValue();
       final byte[] bchannel = (byte[]) reply.get(1);
       final String strchannel = (bchannel == null) ? null : SafeEncoder.encode(bchannel);
       onUnsubscribe(strchannel, subscribedChannels);
     } else if (Arrays.equals(MESSAGE.raw, resp)) {
       final byte[] bchannel = (byte[]) reply.get(1);
       final byte[] bmesg = (byte[]) reply.get(2);
       final String strchannel = (bchannel == null) ? null : SafeEncoder.encode(bchannel);
       final String strmesg = (bmesg == null) ? null : SafeEncoder.encode(bmesg);
       onMessage(strchannel, strmesg);
     } else if (Arrays.equals(PMESSAGE.raw, resp)) {
       final byte[] bpattern = (byte[]) reply.get(1);
       final byte[] bchannel = (byte[]) reply.get(2);
       final byte[] bmesg = (byte[]) reply.get(3);
       final String strpattern = (bpattern == null) ? null : SafeEncoder.encode(bpattern);
       final String strchannel = (bchannel == null) ? null : SafeEncoder.encode(bchannel);
       final String strmesg = (bmesg == null) ? null : SafeEncoder.encode(bmesg);
       onPMessage(strpattern, strchannel, strmesg);
     } else if (Arrays.equals(PSUBSCRIBE.raw, resp)) {
       subscribedChannels = ((Long) reply.get(2)).intValue();
       final byte[] bpattern = (byte[]) reply.get(1);
       final String strpattern = (bpattern == null) ? null : SafeEncoder.encode(bpattern);
       onPSubscribe(strpattern, subscribedChannels);
     } else if (Arrays.equals(PUNSUBSCRIBE.raw, resp)) {
       subscribedChannels = ((Long) reply.get(2)).intValue();
       final byte[] bpattern = (byte[]) reply.get(1);
       final String strpattern = (bpattern == null) ? null : SafeEncoder.encode(bpattern);
       onPUnsubscribe(strpattern, subscribedChannels);
     } else {
       throw new JedisException("Unknown message type: " + firstObj);
     }
   } while (isSubscribed());
 }
 @Override
 public void onSubscribe(String channel, int subscribedChannels) {
   setReady();
   super.onSubscribe(channel, subscribedChannels);
 }