whole_func_string: function Session(options) {
      var self = this;
  
      self.options = options || {};
      defaults(self.options, exports.defaultOptions);
  
      self.reqs = {};
      self.socket = dgram.createSocket(self.options.family);
      self.socket.on('message', msgReceived.bind(self));
      self.socket.on('close', function () {
          // Remove the socket so we don't try to send a message on
          // it when it's closed.
          self.socket = undefined;
      });
      self.socket.on('error', function () {
          // Errors will be emitted here as well as on the callback to the send function.
          // We handle them there, so doing anything here is unnecessary.
          // But having no error handler trips up the test suite.
      });
      // If exclusive is false (default), then cluster workers will use the same underlying handle,
      // allowing connection handling duties to be shared.
      // When exclusive is true, the handle is not shared, and attempted port sharing results in an error.
      self.socket.bind({
          port: 0, //get a random port automatically
          exclusive: true // you should not share the same port, otherwise yours packages will be screwed up between workers
      });
  }
func_code_string: function Session(options) {
      var self = this;
  
      self.options = options || {};
      defaults(self.options, exports.defaultOptions);
  
      self.reqs = {};
      self.socket = dgram.createSocket(self.options.family);
      self.socket.on('message', msgReceived.bind(self));
      self.socket.on('close', function () {
          // Remove the socket so we don't try to send a message on
          // it when it's closed.
          self.socket = undefined;
      });
      self.socket.on('error', function () {
          // Errors will be emitted here as well as on the callback to the send function.
          // We handle them there, so doing anything here is unnecessary.
          // But having no error handler trips up the test suite.
      });
      // If exclusive is false (default), then cluster workers will use the same underlying handle,
      // allowing connection handling duties to be shared.
      // When exclusive is true, the handle is not shared, and attempted port sharing results in an error.
      self.socket.bind({
          port: 0, //get a random port automatically
          exclusive: true // you should not share the same port, otherwise yours packages will be screwed up between workers
      });
  }
func_documentation_string: This creates a new SNMP session.