# obspy.clients.seedlink.easyseedlink.EasySeedLinkClient

class `EasySeedLinkClient`(server_url, autoconnect=True)

  Bases: `builtins.object`

  An easy-to-use SeedLink client.

  This class is meant to be used as a base class, with a subclass implementing one or more of the callbacks (most usefully the `on_data()` callback). See the ObsPy Tutorial for a detailed example.

  Example

      # Subclass the client class
      class MyClient(EasySeedLinkClient):
          # Implement the on_data callback
          def on_data(self, trace):
              print('Received trace:')
              print(trace)

      # Connect to a SeedLink server
      client = MyClient('geofon.gfz-potsdam.de:18000')

      # Retrieve INFO:STREAMS
      streams_xml = client.get_info('STREAMS')
      print(streams_xml)

      # Select a stream and start receiving data
      client.select_stream('BW', 'RJOB', 'EHZ')
      client.run()

  Implementation

  The EasySeedLinkClient uses the `SeedLinkConnection` object. (It is not based on `SLClient`.)

  Parameters: | server_url (str) The SeedLink server URL autoconnect (bool) Connect to the server when the client object is created; default is True.

  Warning

  The SeedLink connection only fails on connection errors if the connection was started explicitly, either when `autoconnect` is `True` or by calling `connect()` explicitly. Otherwise the client might get stuck in an infinite reconnect loop if there are connection problems (e.g. connect, timeout, reconnect, timeout, ...). This might be intended behavior in some situations.

  Attributes

  `__dict__` |
  `__doc__` | str(object=’‘) -> str
  `__module__` | str(object=’‘) -> str
  `__weakref__` | list of weak references to the object (if defined)
  `capabilities` | The server’s capabilities, parsed from `INFO:CAPABILITIES` (cached).

  Public Methods

  `close` | Close the SeedLink connection.
  `connect` | Connect to the SeedLink server.
  `get_info` | Send a SeedLink `INFO` command and retrieve response.
  `has_capability` | Check if the SeedLink server has a certain capability.
  `has_info_capability` | A shortcut for checking for `INFO` capabilities.
  `on_data` | Callback for handling the reception of waveform data.
  `on_seedlink_error` | Callback for handling SeedLink errors.
  `on_terminate` | Callback for handling connection termination.
  `run` | Start streaming data from the SeedLink server.
  `select_stream` | Select a stream for data transfer.

  Private Methods

  Warning

  Private methods are mainly for internal/developer use and their API might change without notice.

  `_get_cat` | Send the CAT command to a server and receive the answer.
  `_send_and_recv` | Send a command to the server and read the response.

  Special Methods

  `__dir__` | default dir() implementation
  `__format__` | default object formatter
  `__init__` |
  `__new__` | Create and return a new object.
  `__reduce__` | helper for pickle
  `__reduce_ex__` | helper for pickle
  `__sizeof__` | size of object in memory, in bytes
  `__subclasshook__` | Abstract classes can override this to customize issubclass().

### Thank you!

We would like to thank our contributors, whose efforts make this software what it is. These people have helped by writing code and documentation, and by testing. They have created and maintained this product, its associated libraries and applications, our build tools and our web sites.

#### Contributors

- Ackerley, Nick
- Allgeyer, Sebastien
- Ammon, Charles J.
- Antunes, Emanuel
- Arnarsson, Ólafur St.
- Bank, Markus
- Barsch, Robert
- Behr, Yannik
- Bernardi, Fabrizio
- Bernauer, Felix
- Bes de Berc, Maxime
- Beyreuther, Moritz
- Boltz, Shawn
- Bonaimé, Sébastien
- Carothers, Lloyd
- Chamberlain, Calum
- Chambers, Derrick
- Chen, Zhao
- Clark, Adam
- Danecek, Peter
- Egdorf, Sven
- Engels, Fabian
- Ermert, Laura
- Eulenfeld, Tom

- Fabbri, Tommaso
- Falco, Nicholas
- Fee, Jeremy
- Grellier, Clément
- Grunberg, Marc
- Hammer, Conny
- Heimann, Sebastian
- Heiniger, Lukas
- Hope, Gaute
- Igel, Heiner
- Inza, Adolfo
- Isken, Marius
- Ketchum, David
- Koymans, Mathijs
- Kremers, Simon
- Kress, Victor
- Krieger, Lars
- Krischer, Lion
- Kula, Damian
- Käufl, Paul
- Köhler, Andreas
- Lecocq, Thomas
- Leeman, John
- Legovini, Paride

- Lesage, Philippe
- Li, Yulin
- Lomax, Anthony
- Lopes, Rui L.
- MacCarthy, Jonathan
- Maggi, Alessia
- Martin, Henri
- Medlin, Andrew
- Megies, Tobias
- Meschede, Matthias
- Michelini, Alberto
- Miller, Nathaniel C.
- Morgenstern, Bernhard
- Nof, Ran Novitsky
- Panning, Mark P.
- Parker, Tom
- Pestourie, Romain
- Rapagnani, Giovanni
- Reyes, Celso
- Ringler, Adam
- Rothenhäusler, Nicolas
- Russo, Emiliano
- Sales de Andrade, Elliott

- Satriano, Claudio
- Saul, Joachim
- Scheingraber, Chris
- Schneider, Simon
- Sippl, Christian
- Snoke, Arthur
- Stange, Stefan
- Stähler, Simon C.
- Sullivan, Benjamin
- Tian, Dongdong
- Trabant, Chad
- Trani, Luca
- Uieda, Leonardo
- Walker, Andrew
- Walther, Marcus
- Wassermann, Joachim
- Williams, Mark C.
- Winkelman, Andrew
- Zaccarelli, Riccardo
- Zad, Seyed Kasra Hosseini
- Zhu, Lijun
- van Driel, Martin
- van Wijk, Kasper

#### Funds

ObsPy was partially funded by the

- German Science Foundation (DFG) via grant DFG IG 16/9-1
- German Ministry for Education and Research (BMBF), GEOTECHNOLOGIEN grant 03G0646H.
- NERA project (Network of European Research Infrastructures for Earthquake Risk Assessment and Mitigation) under the European Community's Seventh Framework Programme (FP7/2007-2013) grant agreement n° 262330
- Leibniz Institute for Applied Geophysics (LIAG)
- VERCE EU-FP7 project (no. 283543)