Skip to content

Commit 2f3133b

Browse files
Move handlers to the shared session
1 parent 10b48c5 commit 2f3133b

File tree

7 files changed

+1938
-3744
lines changed

7 files changed

+1938
-3744
lines changed

electrumx/lib/util_atomicals.py

Lines changed: 177 additions & 176 deletions
Large diffs are not rendered by default.

electrumx/server/session/electrumx_session.py

Lines changed: 112 additions & 1622 deletions
Large diffs are not rendered by default.

electrumx/server/session/http_session.py

Lines changed: 93 additions & 1776 deletions
Large diffs are not rendered by default.

electrumx/server/session/session_base.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ class SessionBase(RPCSession):
2222
sessions.
2323
"""
2424

25-
MAX_CHUNK_SIZE = 2016
2625
session_counter = itertools.count()
2726

2827
def __init__(
@@ -64,7 +63,9 @@ def __init__(
6463
self.logger,
6564
self.coin,
6665
self.session_mgr,
66+
self.peer_mgr,
6767
self.client,
68+
maybe_bump_cost=self.bump_cost
6869
)
6970

7071
async def notify(self, touched, height_changed):

electrumx/server/session/session_manager.py

Lines changed: 5 additions & 155 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from electrumx.server.mempool import MemPool
2424
from electrumx.server.session import BAD_REQUEST, DAEMON_ERROR
2525
from electrumx.server.session.http_session import HttpHandler
26-
from electrumx.server.session.util import non_negative_integer
26+
from electrumx.server.session.util import non_negative_integer, SESSION_PROTOCOL_MAX
2727
from electrumx.server.peers import PeerManager
2828

2929
from typing import TYPE_CHECKING, Type
@@ -111,9 +111,9 @@ def __init__(
111111
self.session_event = Event()
112112

113113
# Set up the RPC request handlers
114-
cmds = ('add_peer daemon_url disconnect getinfo groups log peers '
115-
'query reorg sessions stop debug_memusage_list_all_objects '
116-
'debug_memusage_get_random_backref_chain'.split())
114+
# cmds = ('add_peer daemon_url disconnect getinfo groups log peers '
115+
# 'query reorg sessions stop debug_memusage_list_all_objects '
116+
# 'debug_memusage_get_random_backref_chain'.split())
117117
# LocalRPC.request_handlers = {cmd: getattr(self, 'rpc_' + cmd) for cmd in cmds}
118118

119119
def _ssl_context(self):
@@ -134,157 +134,7 @@ async def _start_servers(self, services):
134134
request_middleware(self),
135135
])
136136
handler = HttpHandler(self, self.db, self.mempool, self.peer_mgr, kind)
137-
# GET
138-
app.router.add_get('/proxy', handler.proxy)
139-
app.router.add_get('/proxy/health', handler.health)
140-
app.router.add_get('/proxy/blockchain.block.header', handler.block_header)
141-
app.router.add_get('/proxy/blockchain.block.headers', handler.block_headers)
142-
app.router.add_get('/proxy/blockchain.estimatefee', handler.estimatefee)
143-
# app.router.add_get('/proxy/headers.subscribe', handler.headers_subscribe)
144-
# app.router.add_get('/proxy/relayfee', handler.relayfee)
145-
app.router.add_get('/proxy/blockchain.scripthash.get_balance', handler.scripthash_get_balance)
146-
app.router.add_get('/proxy/blockchain.scripthash.get_history', handler.scripthash_get_history)
147-
app.router.add_get('/proxy/blockchain.scripthash.get_mempool', handler.scripthash_get_mempool)
148-
app.router.add_get('/proxy/blockchain.scripthash.listunspent', handler.scripthash_listunspent)
149-
app.router.add_get('/proxy/blockchain.scripthash.subscribe', handler.scripthash_subscribe)
150-
app.router.add_get('/proxy/blockchain.transaction.broadcast', handler.transaction_broadcast)
151-
app.router.add_get('/proxy/blockchain.transaction.broadcast_force', handler.transaction_broadcast_force)
152-
app.router.add_get('/proxy/blockchain.transaction.get', handler.transaction_get)
153-
app.router.add_get('/proxy/blockchain.transaction.get_merkle', handler.transaction_merkle)
154-
app.router.add_get('/proxy/blockchain.transaction.id_from_pos', handler.transaction_id_from_pos)
155-
# app.router.add_get('/proxy/server.add_peer', handler.add_peer)
156-
# app.router.add_get('/proxy/server.banner', handler.banner)
157-
app.router.add_get('/proxy/server.donation_address', handler.donation_address)
158-
app.router.add_get('/proxy/server.features', handler.server_features_async)
159-
app.router.add_get('/proxy/server.peers.subscribe', handler.peers_subscribe)
160-
app.router.add_get('/proxy/server.ping', handler.ping)
161-
# app.router.add_get('/proxy/server.version', handler.server_version)
162-
app.router.add_get('/proxy/blockchain.atomicals.validate', handler.transaction_broadcast_validate)
163-
app.router.add_get('/proxy/blockchain.atomicals.get_ft_balances_scripthash',
164-
handler.atomicals_get_ft_balances)
165-
app.router.add_get('/proxy/blockchain.atomicals.get_nft_balances_scripthash',
166-
handler.atomicals_get_nft_balances)
167-
app.router.add_get('/proxy/blockchain.atomicals.listscripthash', handler.atomicals_listscripthash)
168-
app.router.add_get('/proxy/blockchain.atomicals.list', handler.atomicals_list)
169-
app.router.add_get('/proxy/blockchain.atomicals.get_numbers', handler.atomicals_num_to_id)
170-
app.router.add_get('/proxy/blockchain.atomicals.get_block_hash', handler.atomicals_block_hash)
171-
app.router.add_get('/proxy/blockchain.atomicals.get_block_txs', handler.atomicals_block_txs)
172-
app.router.add_get('/proxy/blockchain.atomicals.dump', handler.atomicals_dump)
173-
app.router.add_get('/proxy/blockchain.atomicals.at_location', handler.atomicals_at_location)
174-
app.router.add_get('/proxy/blockchain.atomicals.get_location', handler.atomicals_get_location)
175-
app.router.add_get('/proxy/blockchain.atomicals.get', handler.atomicals_get)
176-
app.router.add_get('/proxy/blockchain.atomicals.get_global', handler.atomicals_get_global)
177-
app.router.add_get('/proxy/blockchain.atomicals.get_state', handler.atomical_get_state)
178-
app.router.add_get('/proxy/blockchain.atomicals.get_state_history',
179-
handler.atomical_get_state_history)
180-
app.router.add_get('/proxy/blockchain.atomicals.get_events', handler.atomical_get_events)
181-
app.router.add_get('/proxy/blockchain.atomicals.get_tx_history', handler.atomicals_get_tx_history)
182-
app.router.add_get('/proxy/blockchain.atomicals.get_realm_info', handler.atomicals_get_realm_info)
183-
app.router.add_get('/proxy/blockchain.atomicals.get_by_realm', handler.atomicals_get_by_realm)
184-
app.router.add_get('/proxy/blockchain.atomicals.get_by_subrealm', handler.atomicals_get_by_subrealm)
185-
app.router.add_get('/proxy/blockchain.atomicals.get_by_dmitem', handler.atomicals_get_by_dmitem)
186-
app.router.add_get('/proxy/blockchain.atomicals.get_by_ticker', handler.atomicals_get_by_ticker)
187-
app.router.add_get('/proxy/blockchain.atomicals.get_by_container',
188-
handler.atomicals_get_by_container)
189-
app.router.add_get('/proxy/blockchain.atomicals.get_by_container_item',
190-
handler.atomicals_get_by_container_item)
191-
app.router.add_get('/proxy/blockchain.atomicals.get_by_container_item_validate',
192-
handler.atomicals_get_by_container_item_validation)
193-
app.router.add_get('/proxy/blockchain.atomicals.get_container_items',
194-
handler.atomicals_get_container_items)
195-
app.router.add_get('/proxy/blockchain.atomicals.get_ft_info', handler.atomicals_get_ft_info)
196-
app.router.add_get('/proxy/blockchain.atomicals.get_dft_mints', handler.atomicals_get_dft_mints)
197-
app.router.add_get('/proxy/blockchain.atomicals.find_tickers', handler.atomicals_search_tickers)
198-
app.router.add_get('/proxy/blockchain.atomicals.find_realms', handler.atomicals_search_realms)
199-
app.router.add_get('/proxy/blockchain.atomicals.find_subrealms', handler.atomicals_search_subrealms)
200-
app.router.add_get('/proxy/blockchain.atomicals.find_containers',
201-
handler.atomicals_search_containers)
202-
app.router.add_get('/proxy/blockchain.atomicals.get_holders', handler.atomicals_get_holders)
203-
app.router.add_get('/proxy/blockchain.atomicals.transaction', handler.atomicals_transaction)
204-
app.router.add_get('/proxy/blockchain.atomicals.transaction_by_height',
205-
handler.transaction_by_height)
206-
app.router.add_get('/proxy/blockchain.atomicals.transaction_by_atomical_id',
207-
handler.transaction_by_atomical_id)
208-
app.router.add_get('/proxy/blockchain.atomicals.transaction_by_scripthash',
209-
handler.transaction_by_scripthash)
210-
app.router.add_get('/proxy/blockchain.atomicals.transaction_global', handler.transaction_global)
211-
# POST
212-
app.router.add_post('/proxy', handler.proxy)
213-
app.router.add_post('/proxy/blockchain.block.header', handler.block_header)
214-
app.router.add_post('/proxy/blockchain.block.headers', handler.block_headers)
215-
app.router.add_post('/proxy/blockchain.estimatefee', handler.estimatefee)
216-
# app.router.add_post('/proxy/headers.subscribe', handler.headers_subscribe)
217-
# app.router.add_post('/proxy/relayfee', handler.relayfee)
218-
app.router.add_post('/proxy/blockchain.scripthash.get_balance', handler.scripthash_get_balance)
219-
app.router.add_post('/proxy/blockchain.scripthash.get_history', handler.scripthash_get_history)
220-
app.router.add_post('/proxy/blockchain.scripthash.get_mempool', handler.scripthash_get_mempool)
221-
app.router.add_post('/proxy/blockchain.scripthash.listunspent', handler.scripthash_listunspent)
222-
app.router.add_post('/proxy/blockchain.scripthash.subscribe', handler.scripthash_subscribe)
223-
app.router.add_post('/proxy/blockchain.transaction.broadcast', handler.transaction_broadcast)
224-
app.router.add_post('/proxy/blockchain.transaction.get', handler.transaction_get)
225-
app.router.add_post('/proxy/blockchain.transaction.get_merkle', handler.transaction_merkle)
226-
app.router.add_post('/proxy/blockchain.transaction.id_from_pos', handler.transaction_id_from_pos)
227-
# app.router.add_post('/proxy/server.add_peer', handler.add_peer)
228-
# app.router.add_post('/proxy/server.banner', handler.banner)
229-
app.router.add_post('/proxy/server.donation_address', handler.donation_address)
230-
app.router.add_post('/proxy/server.features', handler.server_features_async)
231-
app.router.add_post('/proxy/server.peers.subscribe', handler.peers_subscribe)
232-
app.router.add_post('/proxy/server.ping', handler.ping)
233-
# app.router.add_post('/proxy/server.version', handler.server_version)
234-
app.router.add_post('/proxy/blockchain.atomicals.validate', handler.transaction_broadcast_validate)
235-
app.router.add_post('/proxy/blockchain.atomicals.get_ft_balances_scripthash',
236-
handler.atomicals_get_ft_balances)
237-
app.router.add_post('/proxy/blockchain.atomicals.get_nft_balances_scripthash',
238-
handler.atomicals_get_nft_balances)
239-
app.router.add_post('/proxy/blockchain.atomicals.listscripthash', handler.atomicals_listscripthash)
240-
app.router.add_post('/proxy/blockchain.atomicals.list', handler.atomicals_list)
241-
app.router.add_post('/proxy/blockchain.atomicals.get_numbers', handler.atomicals_num_to_id)
242-
app.router.add_post('/proxy/blockchain.atomicals.get_block_hash', handler.atomicals_block_hash)
243-
app.router.add_post('/proxy/blockchain.atomicals.get_block_txs', handler.atomicals_block_txs)
244-
app.router.add_post('/proxy/blockchain.atomicals.dump', handler.atomicals_dump)
245-
app.router.add_post('/proxy/blockchain.atomicals.at_location', handler.atomicals_at_location)
246-
app.router.add_post('/proxy/blockchain.atomicals.get_location', handler.atomicals_get_location)
247-
app.router.add_post('/proxy/blockchain.atomicals.get', handler.atomicals_get)
248-
app.router.add_post('/proxy/blockchain.atomicals.get_global', handler.atomicals_get_global)
249-
app.router.add_post('/proxy/blockchain.atomicals.get_state', handler.atomical_get_state)
250-
app.router.add_post('/proxy/blockchain.atomicals.get_state_history',
251-
handler.atomical_get_state_history)
252-
app.router.add_post('/proxy/blockchain.atomicals.get_events', handler.atomical_get_events)
253-
app.router.add_post('/proxy/blockchain.atomicals.get_tx_history', handler.atomicals_get_tx_history)
254-
app.router.add_post('/proxy/blockchain.atomicals.get_realm_info', handler.atomicals_get_realm_info)
255-
app.router.add_post('/proxy/blockchain.atomicals.get_by_realm', handler.atomicals_get_by_realm)
256-
app.router.add_post('/proxy/blockchain.atomicals.get_by_subrealm',
257-
handler.atomicals_get_by_subrealm)
258-
app.router.add_post('/proxy/blockchain.atomicals.get_by_dmitem', handler.atomicals_get_by_dmitem)
259-
app.router.add_post('/proxy/blockchain.atomicals.get_by_ticker', handler.atomicals_get_by_ticker)
260-
app.router.add_post('/proxy/blockchain.atomicals.get_by_container',
261-
handler.atomicals_get_by_container)
262-
app.router.add_post('/proxy/blockchain.atomicals.get_by_container_item',
263-
handler.atomicals_get_by_container_item)
264-
app.router.add_post('/proxy/blockchain.atomicals.get_by_container_item_validate',
265-
handler.atomicals_get_by_container_item_validation)
266-
app.router.add_post('/proxy/blockchain.atomicals.get_container_items',
267-
handler.atomicals_get_container_items)
268-
app.router.add_post('/proxy/blockchain.atomicals.get_ft_info', handler.atomicals_get_ft_info)
269-
app.router.add_post('/proxy/blockchain.atomicals.get_dft_mints', handler.atomicals_get_dft_mints)
270-
app.router.add_post('/proxy/blockchain.atomicals.find_tickers', handler.atomicals_search_tickers)
271-
app.router.add_post('/proxy/blockchain.atomicals.find_realms', handler.atomicals_search_realms)
272-
app.router.add_post('/proxy/blockchain.atomicals.find_subrealms',
273-
handler.atomicals_search_subrealms)
274-
app.router.add_post('/proxy/blockchain.atomicals.find_containers',
275-
handler.atomicals_search_containers)
276-
app.router.add_post('/proxy/blockchain.atomicals.get_holders', handler.atomicals_get_holders)
277-
app.router.add_post('/proxy/blockchain.atomicals.transaction', handler.atomicals_transaction)
278-
app.router.add_post('/proxy/blockchain.atomicals.transaction_by_height',
279-
handler.transaction_by_height)
280-
app.router.add_post('/proxy/blockchain.atomicals.transaction_by_atomical_id',
281-
handler.transaction_by_atomical_id)
282-
app.router.add_post('/proxy/blockchain.atomicals.transaction_by_scripthash',
283-
handler.transaction_by_scripthash)
284-
app.router.add_post('/proxy/blockchain.atomicals.transaction_global', handler.transaction_global)
285-
# common proxy
286-
app.router.add_get('/proxy/{method}', handler.handle_get_method)
287-
app.router.add_post('/proxy/{method}', handler.handle_post_method)
137+
await handler.add_endpoints(app.router, SESSION_PROTOCOL_MAX)
288138
app['rate_limiter'] = rate_limiter
289139
runner = web.AppRunner(app)
290140
await runner.setup()

0 commit comments

Comments
 (0)