Skip to content

Commit a0ded12

Browse files
authored
Merge pull request #1814 from drift-labs/lukas/oracle-ws-wubscribers-custom-option
feat: option for custom oracle ws subscriber
2 parents 1309349 + aceaf6d commit a0ded12

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

sdk/src/accounts/webSocketDriftClientAccountSubscriber.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,14 @@ export class WebSocketDriftClientAccountSubscriber
7777
resubOpts?: ResubOpts,
7878
commitment?: Commitment
7979
) => AccountSubscriber<any>;
80+
customOracleAccountSubscriber?: new (
81+
accountName: string,
82+
program: Program,
83+
accountPublicKey: PublicKey,
84+
decodeBuffer?: (buffer: Buffer) => any,
85+
resubOpts?: ResubOpts,
86+
commitment?: Commitment
87+
) => AccountSubscriber<any>;
8088

8189
protected isSubscribing = false;
8290
protected subscriptionPromise: Promise<boolean>;
@@ -98,6 +106,14 @@ export class WebSocketDriftClientAccountSubscriber
98106
decodeBuffer?: (buffer: Buffer) => any,
99107
resubOpts?: ResubOpts,
100108
commitment?: Commitment
109+
) => WebSocketAccountSubscriberV2<any> | WebSocketAccountSubscriber<any>,
110+
customOracleAccountSubscriber?: new (
111+
accountName: string,
112+
program: Program,
113+
accountPublicKey: PublicKey,
114+
decodeBuffer?: (buffer: Buffer) => any,
115+
resubOpts?: ResubOpts,
116+
commitment?: Commitment
101117
) => WebSocketAccountSubscriberV2<any> | WebSocketAccountSubscriber<any>
102118
) {
103119
this.isSubscribed = false;
@@ -111,6 +127,7 @@ export class WebSocketDriftClientAccountSubscriber
111127
this.resubOpts = resubOpts;
112128
this.commitment = commitment;
113129
this.customPerpMarketAccountSubscriber = customPerpMarketAccountSubscriber;
130+
this.customOracleAccountSubscriber = customOracleAccountSubscriber;
114131
}
115132

116133
public async subscribe(): Promise<boolean> {
@@ -381,7 +398,9 @@ export class WebSocketDriftClientAccountSubscriber
381398
this.program.provider.connection,
382399
this.program
383400
);
384-
const accountSubscriber = new WebSocketAccountSubscriber<OraclePriceData>(
401+
const AccountSubscriberClass =
402+
this.customOracleAccountSubscriber || WebSocketAccountSubscriber;
403+
const accountSubscriber = new AccountSubscriberClass<OraclePriceData>(
385404
'oracle',
386405
this.program,
387406
oracleInfo.publicKey,

sdk/src/driftClient.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,8 @@ export class DriftClient {
448448
logResubMessages: config.accountSubscription?.logResubMessages,
449449
},
450450
config.accountSubscription?.commitment,
451-
config.accountSubscription?.perpMarketAccountSubscriber
451+
config.accountSubscription?.perpMarketAccountSubscriber,
452+
config.accountSubscription?.oracleAccountSubscriber
452453
);
453454
}
454455
this.eventEmitter = this.accountSubscriber.eventEmitter;

sdk/src/driftClientConfig.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,14 @@ export type DriftClientSubscriptionConfig =
7171
resubOpts?: ResubOpts,
7272
commitment?: Commitment
7373
) => WebSocketAccountSubscriberV2<any> | WebSocketAccountSubscriber<any>;
74+
oracleAccountSubscriber?: new (
75+
accountName: string,
76+
program: Program,
77+
accountPublicKey: PublicKey,
78+
decodeBuffer?: (buffer: Buffer) => any,
79+
resubOpts?: ResubOpts,
80+
commitment?: Commitment
81+
) => WebSocketAccountSubscriberV2<any> | WebSocketAccountSubscriber<any>;
7482
}
7583
| {
7684
type: 'polling';

0 commit comments

Comments
 (0)