blob: dbca30bb64384f96ceedfe62acd4958282fb730c [file] [log] [blame]
Nicolas "Pixel" Nobled51d1212016-01-31 11:33:19 +01001/*
2 *
Jan Tattermusch7897ae92017-06-07 22:57:36 +02003 * Copyright 2016 gRPC authors.
Nicolas "Pixel" Nobled51d1212016-01-31 11:33:19 +01004 *
Jan Tattermusch7897ae92017-06-07 22:57:36 +02005 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
Nicolas "Pixel" Nobled51d1212016-01-31 11:33:19 +01008 *
Jan Tattermusch7897ae92017-06-07 22:57:36 +02009 * http://www.apache.org/licenses/LICENSE-2.0
Nicolas "Pixel" Nobled51d1212016-01-31 11:33:19 +010010 *
Jan Tattermusch7897ae92017-06-07 22:57:36 +020011 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
Nicolas "Pixel" Nobled51d1212016-01-31 11:33:19 +010016 *
17 */
18
19#include "rb_grpc_imports.generated.h"
20
Yuchen Zeng12dfdc32016-04-26 22:05:41 -070021#if GPR_WINDOWS
Nicolas "Pixel" Nobled51d1212016-01-31 11:33:19 +010022#include <tchar.h>
23
24int grpc_rb_load_core() {
25#if GPR_ARCH_64
26 TCHAR fname[] = _T("grpc_c.64.ruby");
27#else
28 TCHAR fname[] = _T("grpc_c.32.ruby");
29#endif
30 HMODULE module = GetModuleHandle(_T("grpc_c.so"));
31 TCHAR path[2048 + 32] = _T("");
32 LPTSTR seek_back = NULL;
33 GetModuleFileName(module, path, 2048);
34
35 seek_back = _tcsrchr(path, _T('\\'));
36
37 while (seek_back) {
38 HMODULE grpc_c;
39 _tcscpy(seek_back + 1, fname);
40 grpc_c = LoadLibrary(path);
41 if (grpc_c) {
42 grpc_rb_load_imports(grpc_c);
43 return 1;
44 } else {
45 *seek_back = _T('\0');
46 seek_back = _tcsrchr(path, _T('\\'));
47 }
48 }
49
50 return 0;
51}
52
53#else
54
55int grpc_rb_load_core() { return 1; }
56
57#endif