public EngineWireHandler(
     @NotNull final WireType byteToWire,
     @NotNull final AssetTree assetTree,
     @NotNull final Throttler throttler) {
   super(byteToWire);
   this.sessionProvider = assetTree.root().getView(SessionProvider.class);
   this.eventLoop = assetTree.root().findOrCreateView(EventLoop.class);
   assert eventLoop != null;
   try {
     this.eventLoop.start();
   } catch (RejectedExecutionException e) {
     LOG.debug("", e);
   }
   this.hostIdentifier = assetTree.root().findOrCreateView(HostIdentifier.class);
   this.assetTree = assetTree;
   this.mapWireHandler = new MapWireHandler<>();
   this.metaDataConsumer = wireInConsumer();
   this.keySetHandler = new CollectionWireHandler();
   this.entrySetHandler = new CollectionWireHandler();
   this.valuesHandler = new CollectionWireHandler();
   this.subscriptionHandler = new ObjectKVSubscriptionHandler(throttler);
   this.topologySubscriptionHandler = new TopologySubscriptionHandler(throttler);
   this.topicPublisherHandler = new TopicPublisherHandler();
   this.publisherHandler = new PublisherHandler();
   this.referenceHandler = new ReferenceHandler();
   this.replicationHandler = new ReplicationHandler();
   this.systemHandler = new SystemHandler();
 }
 private Map<String, UserStat> getMonitoringMap() {
   Map<String, UserStat> userMonitoringMap = null;
   Asset userAsset = assetTree.root().getAsset("proc/users");
   if (userAsset != null && userAsset.getView(MapView.class) != null) {
     userMonitoringMap = userAsset.getView(MapView.class);
   }
   return userMonitoringMap;
 }