class_docstr: Server that listens for inter-process messages.
  
  Messages are exchanged as pickle-encoded objects.
class_docstr_tok: ["Server","that","listens","for","inter-process","messages",".","Messages","are","exchanged","as","pickle-encoded","objects","."]
docstr: Constructs (but does not start) a server.
  
  Args:
      on_message (function): callback that takes a single argument (any
          Python object sent by a client) and returns an object in
          response
docstr_tok: ["Constructs","(","but","does","not","start",")","a","server",".","Args",":","on_message","(","function",")",":","callback","that","takes","a","single","argument","(","any","Python","object","sent","by","a","client",")","and","returns","an","object","in","response"]
code: def __init__(self, on_message):
      """Constructs (but does not start) a server.
  
      Args:
          on_message (function): callback that takes a single argument (any
              Python object sent by a client) and returns an object in
              response
      """
      super().__init__(
          ("localhost", 0), IPCRequestHandler, bind_and_activate=True
      )
      self.on_message = on_message
      self.__lock = threading.Lock()
      self.__in_serve_forever = False
  
file_path: fiftyone/fiftyone/service/ipc.py
imports: import pickle
  import socket
  import socketserver
  import threading
label_desc: Use image node_id 1 to create a new IPCServer object from inherited base classes: socketserver with example: obj = IPCServer(on_message)