class HubEventLogger {

    public void logSessionTimeoutEvent(SessionId sessionId, DateTime sessionExpiryTimestamp, String transactionEntityId, String requestId) {
        Map<EventDetailsKey, String> details = new HashMap<>();
        details.put(session_event_type, SESSION_TIMEOUT);
        details.put(session_expiry_time, sessionExpiryTimestamp.toString());
        details.put(transaction_entity_id, transactionEntityId);
        details.put(request_id, requestId);

        EventSinkHubEvent eventSinkHubEvent = new EventSinkHubEvent(
                serviceInfo,
                sessionId,
                SESSION_EVENT,
                details);

        eventSinkProxy.logHubEvent(eventSinkHubEvent);
        eventEmitter.record(eventSinkHubEvent);
    }

    @Inject public  HubEventLogger(ServiceInfoConfiguration serviceInfo,
                          EventSinkProxy eventSinkProxy,
                          EventEmitter eventEmitter);

}