Skip to content

Commit 4940538

Browse files
committed
latest
1 parent a86edb7 commit 4940538

File tree

8 files changed

+351
-336
lines changed

8 files changed

+351
-336
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ of_client.add_symbol_subscription("AAPL", callback=on_message)
2929

3030
# sub to markets by exchange
3131
of_client.add_exchange_subscription("NYSE", callback=on_message)
32+
33+
of_client.start()
3234
```
3335

3436
### Expected Output

openfeed/__init__.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
2+
import sys
3+
from pathlib import Path
4+
sys.path.append(str(Path(__file__).parent))
5+
6+
# https://github.com/protocolbuffers/protobuf/issues/1491#issuecomment-547504972
7+
# FIXME
8+
19
from .openfeed_client import OpenfeedClient
210

3-
VERSION = '1.0.0'
11+
VERSION = '1.0.2'

openfeed/generated/__init__.py

Lines changed: 0 additions & 3 deletions
This file was deleted.

openfeed/generated/openfeed_api_pb2.py

Lines changed: 61 additions & 61 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

openfeed/generated/openfeed_instrument_pb2.py

Lines changed: 47 additions & 47 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

openfeed/generated/openfeed_pb2.py

Lines changed: 205 additions & 205 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

openfeed/openfeed_client.py

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ def __init__(self, username, password, server="openfeed.aws.barchart.com", debug
1818
self.password = password
1919
self.debug = debug
2020
self.ws = websocket.WebSocket()
21-
self.stop = True
2221
self.token = None
2322

2423
self.instrument_definitions = {}
@@ -27,18 +26,22 @@ def __init__(self, username, password, server="openfeed.aws.barchart.com", debug
2726
self.exchange_handlers = {}
2827
self.heartbeat_handlers = []
2928

30-
self.login_req = openfeed_api_pb2.OpenfeedGatewayRequest(
31-
loginRequest=openfeed_api_pb2.LoginRequest(
32-
username=username, password=password))
33-
3429
self.on_connected = None
3530
self.on_disconnected = None
3631
self.on_error = None
3732

3833
websocket.enableTrace(self.debug)
3934

40-
def start(self):
41-
self.__connect()
35+
def start(self, blocking=True):
36+
if self.token is None:
37+
if blocking is not True:
38+
thread.start_new_thread(self.__connect, ())
39+
else:
40+
self.__connect()
41+
42+
def stop(self):
43+
if self.token is not None:
44+
self.__reset()
4245

4346
def add_heartbeat_subscription(self, callback):
4447
self.heartbeat_handlers.append(callback)
@@ -70,8 +73,12 @@ def get_instrument_definition_by_symbol(self, symbol):
7073
def _send_message(self, msg):
7174
self.ws.send(msg.SerializeToString(), websocket.ABNF.OPCODE_BINARY)
7275

76+
def __reset(self):
77+
self.ws.close()
78+
self.token = None
79+
self.ws = websocket.WebSocket()
80+
7381
def __connect(self):
74-
self.stop = False
7582

7683
def handleLogin(msg):
7784

@@ -148,19 +155,21 @@ def on_message(ws, message):
148155
def on_error(ws, error):
149156
if self.debug:
150157
print("WS Error: ", error)
158+
151159
self.__callback(self.on_error, error)
152160

153161
def on_close(ws):
154162
if self.debug:
155163
print("WS Close")
164+
165+
self.__reset()
156166
self.__callback(self.on_disconnected, ws)
157167

158168
def on_open(ws):
159169
if self.debug:
160170
print("WS Open")
161171

162-
self._send_message(self.login_req)
163-
172+
self._send_message(self.__create_login_request())
164173
self.__callback(self.on_connected, ws)
165174

166175
self.ws = websocket.WebSocketApp("ws://" + self.server + "/ws",
@@ -223,6 +232,11 @@ def __create_exchange_request(self, exchanges):
223232

224233
return of_req
225234

235+
def __create_login_request(self):
236+
return openfeed_api_pb2.OpenfeedGatewayRequest(
237+
loginRequest=openfeed_api_pb2.LoginRequest(
238+
username=self.username, password=self.password))
239+
226240
def __callback(self, callback, *args):
227241
try:
228242
if callback is not None:
@@ -251,13 +265,7 @@ def handle_heartbeat(msg):
251265
of_client.on_connected = lambda x: print("of-client: connected")
252266

253267
# blocking mode
254-
255-
of_client.start()
256-
257-
# non-blocking mode
258-
# thread.start_new_thread(of_client.start, ())
259-
260-
# print("Started Openfeed Client")
268+
of_client.start(blocking=True)
261269

262270
# while True:
263-
# time.sleep(1000)
271+
# time.sleep(3)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
setup(
1919
name='openfeed',
20-
version='1.0.0',
20+
version='1.0.2',
2121
author='Barchart',
2222
author_email='[email protected]',
2323
license='MIT',

0 commit comments

Comments
 (0)