]>
Commit | Line | Data |
---|---|---|
f67539c2 TL |
1 | /* |
2 | * Licensed to the Apache Software Foundation (ASF) under one | |
3 | * or more contributor license agreements. See the NOTICE file | |
4 | * distributed with this work for additional information | |
5 | * regarding copyright ownership. The ASF licenses this file | |
6 | * to you under the Apache License, Version 2.0 (the | |
7 | * "License"); you may not use this file except in compliance | |
8 | * with the License. You may obtain a copy of the License at | |
9 | * | |
10 | * http://www.apache.org/licenses/LICENSE-2.0 | |
11 | * | |
12 | * Unless required by applicable law or agreed to in writing, | |
13 | * software distributed under the License is distributed on an | |
14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
15 | * KIND, either express or implied. See the License for the | |
16 | * specific language governing permissions and limitations | |
17 | * under the License. | |
18 | */ | |
19 | ||
20 | module.exports = createClient; | |
21 | ||
22 | /** | |
23 | * Creates a new client object for the specified Thrift service. | |
24 | * @param {object} ServiceClient - The module containing the generated service client | |
25 | * @param {Connection} Connection - The connection to use. | |
26 | * @returns {object} The client object. | |
27 | */ | |
28 | function createClient(ServiceClient, connection) { | |
29 | // TODO validate required options and throw otherwise | |
30 | if (ServiceClient.Client) { | |
31 | ServiceClient = ServiceClient.Client; | |
32 | } | |
33 | // TODO detangle these initialization calls | |
34 | // creating "client" requires | |
35 | // - new service client instance | |
36 | // | |
37 | // New service client instance requires | |
38 | // - new transport instance | |
39 | // - protocol class reference | |
40 | // | |
41 | // New transport instance requires | |
42 | // - Buffer to use (or none) | |
43 | // - Callback to call on flush | |
44 | ||
45 | // Wrap the write method | |
46 | var writeCb = function(buf, seqid) { | |
47 | connection.write(buf, seqid); | |
48 | }; | |
49 | var transport = new connection.transport(undefined, writeCb); | |
50 | var client = new ServiceClient(transport, connection.protocol); | |
51 | transport.client = client; | |
52 | connection.client = client; | |
53 | return client; | |
54 | }; |