Skip to content

Commit 68e75e4

Browse files
author
mustafaiman
committed
decouple Promises from q
1 parent 0b9d261 commit 68e75e4

16 files changed

+85
-75
lines changed

src/DistributedObject.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import Promise = Q.Promise;
1+
import {Promise} from 'es6-promise';
22
export interface DistributedObject {
33
/*
44
* Returns the key of the partition that this DistributedObject is assigned to.

src/HazelcastClient.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import {InvocationService, ListenerService} from './invocation/InvocationService
33
import ClientConnectionManager = require('./invocation/ClientConnectionManager');
44
import {ClientConfig} from './Config';
55
import ProxyManager = require('./proxy/ProxyManager');
6-
import Q = require('q');
76
import {IMap} from './IMap';
87
import {JsonSerializationService} from './serialization/SerializationService';
98
import PartitionService = require('./PartitionService');
@@ -13,9 +12,10 @@ import {LoggingService} from './LoggingService';
1312
import {LifecycleService, LifecycleEvent} from './LifecycleService';
1413
import {ClientGetDistributedObjectsCodec} from './codec/ClientGetDistributedObjectsCodec';
1514
import {DistributedObject} from './DistributedObject';
16-
import defer = Q.defer;
1715
import {ClientInfo} from './ClientInfo';
1816
import ClientMessage = require('./ClientMessage');
17+
import {Promise} from 'es6-promise';
18+
import {defer} from 'q';
1919

2020
export default class HazelcastClient {
2121

@@ -31,7 +31,7 @@ export default class HazelcastClient {
3131
private proxyManager: ProxyManager;
3232
private heartbeat: Heartbeat;
3333

34-
public static newHazelcastClient(config?: ClientConfig): Q.Promise<HazelcastClient> {
34+
public static newHazelcastClient(config?: ClientConfig): Promise<HazelcastClient> {
3535
var client: HazelcastClient = new HazelcastClient(config);
3636
return client.init();
3737
}
@@ -54,8 +54,8 @@ export default class HazelcastClient {
5454
this.heartbeat = new Heartbeat(this);
5555
}
5656

57-
private init(): Q.Promise<HazelcastClient> {
58-
var deferred = Q.defer<HazelcastClient>();
57+
private init(): Promise<HazelcastClient> {
58+
var deferred = defer<HazelcastClient>();
5959
this.clusterService.start()
6060
.then(() => {
6161
return this.partitionService.initialize();
@@ -79,8 +79,8 @@ export default class HazelcastClient {
7979
return this.clusterService.getClientInfo();
8080
}
8181

82-
getDistributedObjects(): Q.Promise<DistributedObject[]> {
83-
var deferred = Q.defer<DistributedObject[]>();
82+
getDistributedObjects(): Promise<DistributedObject[]> {
83+
var deferred = defer<DistributedObject[]>();
8484
var clientMessage = ClientGetDistributedObjectsCodec.encodeRequest();
8585
var toObjectFunc = this.serializationService.toObject.bind(this);
8686
var proxyManager = this.proxyManager;
@@ -136,11 +136,11 @@ export default class HazelcastClient {
136136
return this.heartbeat;
137137
}
138138

139-
addDistributedObjectListener(listenerFunc: Function): Q.Promise<string> {
139+
addDistributedObjectListener(listenerFunc: Function): Promise<string> {
140140
return this.proxyManager.addDistributedObjectListener(listenerFunc);
141141
}
142142

143-
removeDistributedObjectListener(listenerId: string): Q.Promise<boolean> {
143+
removeDistributedObjectListener(listenerId: string): Promise<boolean> {
144144
return this.proxyManager.removeDistributedObjectListener(listenerId);
145145
}
146146

src/IMap.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import Promise = Q.Promise;
21
import {DistributedObject} from './DistributedObject';
2+
import {Promise} from 'es6-promise';
33
export interface IMap<K, V> extends DistributedObject {
44

55
/**

src/ISet.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import Promise = Q.Promise;
1+
import {Promise} from 'es6-promise';
22
import {DistributedObject} from './DistributedObject';
33
export interface ISet<E> extends DistributedObject {
44
/**

src/PartitionService.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import Q = require('q');
1+
import * as Q from 'q';
2+
import {Promise} from 'es6-promise';
23
import GetPartitionsCodec = require('./codec/GetPartitionsCodec');
34
import ClientMessage = require('./ClientMessage');
45
import Address = require('./Address');
@@ -14,7 +15,7 @@ class PartitionService {
1415
this.client = client;
1516
}
1617

17-
initialize(): Q.Promise<PartitionService> {
18+
initialize(): Promise<PartitionService> {
1819
var deferred = Q.defer<PartitionService>();
1920
this.refresh().then(() => {
2021
deferred.resolve(this);
@@ -23,7 +24,7 @@ class PartitionService {
2324
return deferred.promise;
2425
}
2526

26-
refresh(): Q.Promise<void> {
27+
refresh(): Promise<void> {
2728
var ownerConnection = this.client.getClusterService().getOwnerConnection();
2829
var clientMessage: ClientMessage = GetPartitionsCodec.encodeRequest();
2930

src/invocation/ClientConnection.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import net = require('net');
2-
import Q = require('q');
2+
import * as Q from 'q';
3+
import {Promise} from 'es6-promise';
34
import Address = require('../Address');
45
import {BitsUtil} from '../BitsUtil';
56
import {LoggingService} from '../LoggingService';
@@ -27,7 +28,7 @@ class ClientConnection {
2728
return this.address;
2829
}
2930

30-
connect(): Q.Promise<ClientConnection> {
31+
connect(): Promise<ClientConnection> {
3132
var ready = Q.defer<ClientConnection>();
3233

3334
this.socket = net.connect(this.address.port, this.address.host, () => {
@@ -48,7 +49,7 @@ class ClientConnection {
4849
return ready.promise;
4950
}
5051

51-
write(buffer: Buffer): Q.Promise<void> {
52+
write(buffer: Buffer): Promise<void> {
5253
var deferred = Q.defer<void>();
5354
this.socket.write(buffer, 'utf8', (e: any) => {
5455
if (e === undefined) {

src/invocation/ClientConnectionManager.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import Q = require('q');
1+
import * as Q from 'q';
2+
import {Promise} from 'es6-promise';
23

34
import Address = require('../Address');
45
import ClientConnection = require('./ClientConnection');
@@ -26,7 +27,7 @@ class ClientConnectionManager extends EventEmitter {
2627
this.client = client;
2728
}
2829

29-
getOrConnect(address: Address, ownerConnection: boolean = false): Q.Promise<ClientConnection> {
30+
getOrConnect(address: Address, ownerConnection: boolean = false): Promise<ClientConnection> {
3031
var addressIndex = Address.encodeToString(address);
3132
var result: Q.Deferred<ClientConnection> = Q.defer<ClientConnection>();
3233

@@ -62,9 +63,9 @@ class ClientConnectionManager extends EventEmitter {
6263
}).then(() => {
6364
this.onConnectionOpened(clientConnection);
6465
result.resolve(clientConnection);
66+
delete this.pendingConnections[addressIndex];
6567
}).catch((e: any) => {
6668
result.reject(e);
67-
}).finally(() => {
6869
delete this.pendingConnections[addressIndex];
6970
});
7071
return result.promise;
@@ -91,7 +92,7 @@ class ClientConnectionManager extends EventEmitter {
9192
this.emit(EMIT_CONNECTION_OPENED, connection);
9293
}
9394

94-
private authenticate(connection: ClientConnection, ownerConnection: boolean): Q.Promise<boolean> {
95+
private authenticate(connection: ClientConnection, ownerConnection: boolean): Promise<boolean> {
9596
var authenticator = new ConnectionAuthenticator(connection, this.client);
9697

9798
return authenticator.authenticate(ownerConnection);

src/invocation/ClusterService.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import ClientConnection = require('./ClientConnection');
22
import Address = require('../Address');
3-
import Q = require('q');
43
import {ClientAddMembershipListenerCodec} from '../codec/ClientAddMembershipListenerCodec';
54
import ClientMessage = require('../ClientMessage');
65
import {Member} from '../Member';
76
import {LoggingService} from '../LoggingService';
87
import {EventEmitter} from 'events';
98
import {ClientInfo} from '../ClientInfo';
109
import HazelcastClient from '../HazelcastClient';
10+
import {Promise} from 'es6-promise';
11+
import * as Q from 'q';
1112

1213
const MEMBER_ADDED = 1;
1314
const MEMBER_REMOVED = 2;
@@ -41,13 +42,13 @@ class ClusterService extends EventEmitter {
4142
this.members = [];
4243
}
4344

44-
start(): Q.Promise<void> {
45+
start(): Promise<void> {
4546
this.initHeartbeatListener();
4647
this.initConnectionListener();
4748
return this.connectToCluster();
4849
}
4950

50-
connectToCluster(): Q.Promise<void> {
51+
connectToCluster(): Promise<void> {
5152
if (this.members.length > 0) {
5253
this.knownAddresses = new Array<Address>();
5354
this.members.forEach((member: Member) => {
@@ -138,7 +139,7 @@ class ClusterService extends EventEmitter {
138139
return this.ownerConnection;
139140
}
140141

141-
initMemberShipListener(): Q.Promise<void> {
142+
initMemberShipListener(): Promise<void> {
142143
var deferred = Q.defer<void>();
143144
var request = ClientAddMembershipListenerCodec.encodeRequest(false);
144145

src/invocation/ConnectionAuthenticator.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import Q = require('q');
2-
31
import ClientConnection = require('./ClientConnection');
42
import {InvocationService} from './InvocationService';
53
import ClientMessage = require('../ClientMessage');
64
import {ClientAuthenticationCodec} from '../codec/ClientAuthenticationCodec';
75
import HazelcastClient from '../HazelcastClient';
6+
import {Promise} from 'es6-promise';
7+
import * as Q from 'q';
88

99
class ConnectionAuthenticator {
1010

@@ -16,7 +16,7 @@ class ConnectionAuthenticator {
1616
this.client = client;
1717
}
1818

19-
authenticate(ownerConnection: boolean): Q.Promise<boolean> {
19+
authenticate(ownerConnection: boolean): Promise<boolean> {
2020
var groupConfig = this.client.getConfig().groupConfig;
2121
var clusterService = this.client.getClusterService();
2222
var uuid: string = clusterService.uuid;

src/invocation/InvocationService.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import ClientConnection = require('./ClientConnection');
22
import ClientMessage = require('../ClientMessage');
3-
import Q = require('q');
43
import Long = require('long');
54
import {Data} from '../serialization/Data';
65
import Address = require('../Address');
@@ -9,6 +8,8 @@ import {BitsUtil} from '../BitsUtil';
98
import {LoggingService} from '../LoggingService';
109
import {EventEmitter} from 'events';
1110
import HazelcastClient from '../HazelcastClient';
11+
import {Promise} from 'es6-promise';
12+
import * as Q from 'q';
1213

1314
var EXCEPTION_MESSAGE_TYPE = 109;
1415
var INVOCATION_TIMEOUT = 120000;
@@ -38,7 +39,7 @@ export class InvocationService {
3839
private smartRoutingEnabled: boolean;
3940
private logger = LoggingService.getLoggingService();
4041

41-
invoke: (invocation: Invocation) => Q.Promise<ClientMessage>;
42+
invoke: (invocation: Invocation) => Promise<ClientMessage>;
4243

4344
constructor(hazelcastClient: HazelcastClient) {
4445
this.client = hazelcastClient;
@@ -51,7 +52,7 @@ export class InvocationService {
5152
}
5253

5354
invokeOnConnection(connection: ClientConnection, request: ClientMessage,
54-
handler?: (...args: any[]) => any): Q.Promise<ClientMessage> {
55+
handler?: (...args: any[]) => any): Promise<ClientMessage> {
5556
var invocation = new Invocation(request);
5657
invocation.connection = connection;
5758
if (handler) {
@@ -60,19 +61,19 @@ export class InvocationService {
6061
return this.invoke(invocation);
6162
}
6263

63-
invokeOnPartition(request: ClientMessage, partitionId: number): Q.Promise<ClientMessage> {
64+
invokeOnPartition(request: ClientMessage, partitionId: number): Promise<ClientMessage> {
6465
var invocation = new Invocation(request);
6566
invocation.partitionId = partitionId;
6667
return this.invoke(invocation);
6768
}
6869

69-
invokeOnTarget(request: ClientMessage, target: Address): Q.Promise<ClientMessage> {
70+
invokeOnTarget(request: ClientMessage, target: Address): Promise<ClientMessage> {
7071
var invocation = new Invocation(request);
7172
invocation.address = target;
7273
return this.invoke(invocation);
7374
}
7475

75-
invokeOnRandomTarget(request: ClientMessage): Q.Promise<ClientMessage> {
76+
invokeOnRandomTarget(request: ClientMessage): Promise<ClientMessage> {
7677
return this.invoke(new Invocation(request));
7778
}
7879

@@ -97,14 +98,14 @@ export class InvocationService {
9798
}
9899
}
99100

100-
private sendToAddress(invocation: Invocation, addres: Address): Q.Promise<ClientMessage> {
101+
private sendToAddress(invocation: Invocation, addres: Address): Promise<ClientMessage> {
101102
return this.client.getConnectionManager().getOrConnect(addres)
102103
.then<ClientMessage>((connection: ClientConnection) => {
103104
return this.send(invocation, connection);
104105
});
105106
}
106107

107-
private send(invocation: Invocation, connection: ClientConnection): Q.Promise<ClientMessage> {
108+
private send(invocation: Invocation, connection: ClientConnection): Promise<ClientMessage> {
108109
var correlationId = this.correlationCounter++;
109110
var message = invocation.request;
110111
message.setCorrelationId(Long.fromNumber(correlationId));
@@ -181,7 +182,7 @@ export class ListenerService {
181182
this.internalEventEmitter.setMaxListeners(0);
182183
}
183184

184-
registerListener(codec: any, handler: any): Q.Promise<string> {
185+
registerListener(codec: any, handler: any): Promise<string> {
185186
var deferred = Q.defer<string>();
186187
var invocation = new Invocation(codec.encodeRequest(true));
187188
invocation.handler = handler;
@@ -194,7 +195,7 @@ export class ListenerService {
194195
return deferred.promise;
195196
}
196197

197-
deregisterListener(codec: any, listenerId: string): Q.Promise<boolean> {
198+
deregisterListener(codec: any, listenerId: string): Promise<boolean> {
198199
var deferred = Q.defer<boolean>();
199200
var invocation = new Invocation(codec.encodeRequest(listenerId));
200201
var listenerIdToCorrelation = this.listenerIdToCorrelation;

src/proxy/BaseProxy.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import {SerializationService} from '../serialization/SerializationService';
22
import {Data} from '../serialization/Data';
33
import ClientMessage = require('../ClientMessage');
4-
import Q = require('q');
54
import HazelcastClient from '../HazelcastClient';
5+
import * as Q from 'q';
6+
import {Promise} from 'es6-promise';
67

78
export class BaseProxy {
89

@@ -16,7 +17,7 @@ export class BaseProxy {
1617
this.serviceName = serviceName;
1718
}
1819

19-
private createPromise<T>(codec: any, promise: Q.Promise<ClientMessage>): Q.Promise<T> {
20+
private createPromise<T>(codec: any, promise: Promise<ClientMessage>): Promise<T> {
2021
var deferred: Q.Deferred<T> = Q.defer<T>();
2122
var toObject = this.toObject.bind(this);
2223
promise.then(function(clientMessage: ClientMessage) {
@@ -32,20 +33,20 @@ export class BaseProxy {
3233
return deferred.promise;
3334
}
3435

35-
protected encodeInvokeOnKey<T>(codec: any, partitionKey: any, ...codecArguments: any[]): Q.Promise<T> {
36+
protected encodeInvokeOnKey<T>(codec: any, partitionKey: any, ...codecArguments: any[]): Promise<T> {
3637
var partitionId: number = this.client.getPartitionService().getPartitionId(partitionKey);
3738
return this.encodeInvokeOnPartition<T>(codec, partitionId, ...codecArguments);
3839
}
3940

40-
protected encodeInvokeOnRandomTarget<T>(codec: any, ...codecArguments: any[]): Q.Promise<T> {
41+
protected encodeInvokeOnRandomTarget<T>(codec: any, ...codecArguments: any[]): Promise<T> {
4142
var clientMessage = codec.encodeRequest(this.name, ...codecArguments);
4243
var invocationResponse = this.client.getInvocationService().invokeOnRandomTarget(clientMessage);
4344
return this.createPromise<T>(codec, invocationResponse);
4445
}
4546

46-
protected encodeInvokeOnPartition<T>(codec: any, partitionId: number, ...codecArguments: any[]): Q.Promise<T> {
47+
protected encodeInvokeOnPartition<T>(codec: any, partitionId: number, ...codecArguments: any[]): Promise<T> {
4748
var clientMessage = codec.encodeRequest(this.name, ...codecArguments);
48-
var invocationResponse: Q.Promise<ClientMessage> = this.client.getInvocationService()
49+
var invocationResponse: Promise<ClientMessage> = this.client.getInvocationService()
4950
.invokeOnPartition(clientMessage, partitionId);
5051

5152
return this.createPromise<T>(codec, invocationResponse);
@@ -72,7 +73,7 @@ export class BaseProxy {
7273
return this.serviceName;
7374
}
7475

75-
public destroy() : Q.Promise<void> {
76+
public destroy() : Promise<void> {
7677
return this.client.getProxyManager().destroyProxy(this.name, this.serviceName);
7778
}
7879
}

0 commit comments

Comments
 (0)