// Copyright (C) 2018 Zilliqa
//
// This file is part of zilliqa-js
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
import { WebSocketProvider } from './ws';
import {
NewBlockQuery,
NewEventQuery,
QueryParam,
SubscriptionOption,
} from './types';
export class Subscription extends WebSocketProvider {
subject: NewBlockQuery | NewEventQuery;
constructor(
subject: NewBlockQuery | NewEventQuery,
url: string,
options?: SubscriptionOption,
) {
super(url, options);
this.subject = subject;
}
async start(): Promise {
return super.subscribe(this.subject);
}
async stop() {
const event =
this.subject.query === QueryParam.NEW_BLOCK
? {
query: QueryParam.UNSUBSCRIBE,
type: QueryParam.NEW_BLOCK,
}
: { query: QueryParam.UNSUBSCRIBE, type: QueryParam.EVENT_LOG };
return super.unsubscribe(event);
}
}