class_docstr: Frame(data=None, track=False, copy=None, copy_threshold=zmq.COPY_THRESHOLD)
  
  A zmq message Frame class for non-copying send/recvs and access to message properties.
  
  A ``zmq.Frame`` wraps an underlying ``zmq_msg_t``.
  
  Message *properties* can be accessed by treating a Frame like a dictionary (``frame["User-Id"]``).
  
  .. versionadded:: 14.4, libzmq 4
  
      Frames created by ``recv(copy=False)`` can be used to access message properties and attributes,
      such as the CURVE User-Id.
  
      For example::
  
          frames = socket.recv_multipart(copy=False)
          user_id = frames[0]["User-Id"]
  
  This class is used if you want to do non-copying send and recvs.
  When you pass a chunk of bytes to this class, e.g. ``Frame(buf)``, the
  ref-count of `buf` is increased by two: once because the Frame saves `buf` as
  an instance attribute and another because a ZMQ message is created that
  points to the buffer of `buf`. This second ref-count increase makes sure
  that `buf` lives until all messages that use it have been sent.
  Once 0MQ sends all the messages and it doesn't need the buffer of ``buf``,
  0MQ will call ``Py_DECREF(s)``.
  
  Parameters
  ----------
  
  data : object, optional
      any object that provides the buffer interface will be used to
      construct the 0MQ message data.
  track : bool [default: False]
      whether a MessageTracker_ should be created to track this object.
      Tracking a message has a cost at creation, because it creates a threadsafe
      Event object.
  copy : bool [default: use copy_threshold]
      Whether to create a copy of the data to pass to libzmq
      or share the memory with libzmq.
      If unspecified, copy_threshold is used.
  copy_threshold: int [default: zmq.COPY_THRESHOLD]
      If copy is unspecified, messages smaller than this many bytes
      will be copied and messages larger than this will be shared with libzmq.
class_docstr_tok: ["Frame","(","data=None",",","track=False",",","copy=None",",","copy_threshold=zmq.COPY_THRESHOLD",")","A","zmq","message","Frame","class","for","non-copying","send\/recvs","and","access","to","message","properties",".","A","``","zmq.Frame","``","wraps","an","underlying","``","zmq_msg_t","``",".","Message","*","properties","*","can","be","accessed","by","treating","a","Frame","like","a","dictionary","(","``","frame","[","``","User-Id","''","]","``",")",".","..","versionadded",":",":","14.4",",","libzmq","4","Frames","created","by","``","recv","(","copy=False",")","``","can","be","used","to","access","message","properties","and","attributes",",","such","as","the","CURVE","User-Id",".","For","example",":",":","frames","=","socket.recv_multipart","(","copy=False",")","user_id","=","frames","[","0","]","[","``","User-Id","''","]","This","class","is","used","if","you","want","to","do","non-copying","send","and","recvs",".","When","you","pass","a","chunk","of","bytes","to","this","class",",","e.g",".","``","Frame","(","buf",")","``",",","the","ref-count","of","`","buf","`","is","increased","by","two",":","once","because","the","Frame","saves","`","buf","`","as","an","instance","attribute","and","another","because","a","ZMQ","message","is","created","that","points","to","the","buffer","of","`","buf","`",".","This","second","ref-count","increase","makes","sure","that","`","buf","`","lives","until","all","messages","that","use","it","have","been","sent",".","Once","0MQ","sends","all","the","messages","and","it","does","n't","need","the","buffer","of","``","buf","``",",","0MQ","will","call","``","Py_DECREF","(","s",")","``",".","Parameters","--","--","--","--","--","data",":","object",",","optional","any","object","that","provides","the","buffer","interface","will","be","used","to","construct","the","0MQ","message","data",".","track",":","bool","[","default",":","False","]","whether","a","MessageTracker_","should","be","created","to","track","this","object",".","Tracking","a","message","has","a","cost","at","creation",",","because","it","creates","a","threadsafe","Event","object",".","copy",":","bool","[","default",":","use","copy_threshold","]","Whether","to","create","a","copy","of","the","data","to","pass","to","libzmq","or","share","the","memory","with","libzmq",".","If","unspecified",",","copy_threshold","is","used",".","copy_threshold",":","int","[","default",":","zmq.COPY_THRESHOLD","]","If","copy","is","unspecified",",","messages","smaller","than","this","many","bytes","will","be","copied","and","messages","larger","than","this","will","be","shared","with","libzmq","."]
code: def routing_id(self, routing_id):
      _draft((4, 2), "CLIENT-SERVER")
      self.set("routing_id", routing_id)
  
file_path: catboost/contrib/python/pyzmq/py3/zmq/sugar/frame.py
imports: import zmq
  from zmq.backend import Frame
  from .attrsettr import AttributeSetter
label_desc: Use image node_id 5 for calling the Frame obj's underlying member method code with example usage: obj.routing_id(routing_id) without return types