@Override
  public void onPut(byte[] key, TypePut type)
  {
    //_watchKey.init(key);
    WatchKey watchKey = new WatchKey(key);
   
    switch (type) {
    case LOCAL:
      ArrayList<WatchEntry> listLocal = _entryMapLocal.get(watchKey);
      onPut(listLocal, key);
      break;
      
    case REMOTE:
    {
      int hash = _table.getPodHash(key);
      TablePodNodeAmp node = _table.getTablePod().getNode(hash);
      
      if (node.isSelfCopy()) {
        // copies are responsible for their own local watch events
        onPut(key, TypePut.LOCAL);
      }
      
      if (node.isSelfOwner()) {
        // only the owner sends remote watch events
        /*
        System.out.println("NSO: " +  BartenderSystem.getCurrentSelfServer().getDisplayName()
                           + " " + node.isSelfOwner() + " " + node + " " + Hex.toHex(key));
                           */
        ArrayList<WatchEntry> listRemote = _entryMapRemote.get(watchKey);
        onPut(listRemote, key);
      }
      break;
    }
      
    default:
      throw new IllegalArgumentException(String.valueOf(type));
    }
  }
@ Override public void onPut ( byte [ ] key , TypePut type ) { WatchKey watchKey = new WatchKey ( key ) ; switch ( type ) { case LOCAL : ArrayList < WatchEntry > listLocal = _entryMapLocal . get ( watchKey ) ; onPut ( listLocal , key ) ; break ; case REMOTE : { int hash = _table . getPodHash ( key ) ; TablePodNodeAmp node = _table . getTablePod ( ) . getNode ( hash ) ; if ( node . isSelfCopy ( ) ) { onPut ( key , TypePut . LOCAL ) ; } if ( node . isSelfOwner ( ) ) { ArrayList < WatchEntry > listRemote = _entryMapRemote . get ( watchKey ) ; onPut ( listRemote , key ) ; } break ; } default : throw new IllegalArgumentException ( String . valueOf ( type ) ) ; } }
Notification on a table put.

@param key the key of the updated row
@param type the notification type (local/remote)