(in-package #:shared-implementation)

;;;; Licensed under the Apache License, Version 2.0 (the "License");
;;;; you may not use this file except in compliance with the License.
;;;; You may obtain a copy of the License at
;;;;
;;;;     http://www.apache.org/licenses/LICENSE-2.0
;;;;
;;;; Unless required by applicable law or agreed to in writing, software
;;;; distributed under the License is distributed on an "AS IS" BASIS,
;;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
;;;; See the License for the specific language governing permissions and
;;;; limitations under the License.

(defvar *structs* (make-hash-table))

(defun shared.shared-service-implementation:get-struct (key)
  (format t "getStruct(~a)~%" key)
  (gethash key *structs*))

(defun add-log (key value)
  (setf (gethash key *structs*)
        (make-instance 'shared:sharedstruct
                       :key key
                       :value (write-to-string value))))
