// Path: src/main/java/com/github/tonivade/resp/command/Session.java
// public interface Session {
//   String getId();
//   void publish(RedisToken msg);
//   void close();
//   void destroy();
//   <T> Option<T> getValue(String key);
//   void putValue(String key, Object value);
//   <T> Option<T> removeValue(String key);
//   InetSocketAddress getRemoteAddress();
//   InetSocketAddress getLocalAddress();
// }


import com.github.tonivade.resp.command.Session;
package com.github.tonivade.resp;


public interface SessionListener {

  void sessionDeleted(Session session);

  void sessionCreated(Session session);
  
  static SessionListener nullListener() {
    return new SessionListener() {
      @Override
// Path: src/main/java/com/github/tonivade/resp/command/Session.java
// public interface Session {
//   String getId();
//   void publish(RedisToken msg);
//   void close();
//   void destroy();
//   <T> Option<T> getValue(String key);
//   void putValue(String key, Object value);
//   <T> Option<T> removeValue(String key);
//   InetSocketAddress getRemoteAddress();
//   InetSocketAddress getLocalAddress();
// }


// Path: src/main/java/com/github/tonivade/resp/SessionListener.java
import com.github.tonivade.resp.command.Session;

package com.github.tonivade.resp;


public interface SessionListener {

  void sessionDeleted(Session session);

  void sessionCreated(Session session);
  
  static SessionListener nullListener() {
    return new SessionListener() {
      @Override
      public void sessionDeleted(Session session) {