public string AddDistributedObjectListener(IDistributedObjectListener listener) { var isSmart = _client.GetClientConfig().GetNetworkConfig().IsSmartRouting(); var request = ClientAddDistributedObjectListenerCodec.EncodeRequest(isSmart); var context = new ClientContext(_client.GetSerializationService(), _client.GetClientClusterService(), _client.GetClientPartitionService(), _client.GetInvocationService(), _client.GetClientExecutionService(), _client.GetListenerService(), _client.GetNearCacheManager(), this, _client.GetClientConfig()); DistributedEventHandler eventHandler = delegate(IClientMessage message) { ClientAddDistributedObjectListenerCodec.EventHandler.HandleEvent(message, (name, serviceName, eventType) => { var _event = new LazyDistributedObjectEvent(eventType, serviceName, name, this); switch (eventType) { case DistributedObjectEvent.EventType.Created: listener.DistributedObjectCreated(_event); break; case DistributedObjectEvent.EventType.Destroyed: listener.DistributedObjectDestroyed(_event); break; default: Logger.Warning(string.Format("Undefined DistributedObjectListener event type received: {0} !!!", eventType)); break; } }); }; return(context.GetListenerService().RegisterListener(request, m => ClientAddDistributedObjectListenerCodec.DecodeResponse(m).response, ClientRemoveDistributedObjectListenerCodec.EncodeRequest, eventHandler)); }