GLD_Service.m
2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
//
// GLD_Service.m
// GLD_Networking
//
// Created by yiyangkeji on 2017/6/21.
// Copyright © 2017年 yiyangkeji. All rights reserved.
//
#import "GLD_Service.h"
typedef NS_ENUM(NSInteger, gld_serviceType) {
gldService0,
gldService1
};
//运行服务器
#define WEB_SERVICE_DEVELOP_BASEURL @"http://www.jimijiayuan.cn:8080"
#define WEB_SERVICE_RELEASE_BASEURL @"https://app.yxvzb.com"
@interface GLD_Service ()
@property (nonatomic, assign)gld_environmentType environment;
@property (nonatomic, assign)NSInteger type;
@end
@interface GLD_Service0 : GLD_Service
@end
@interface GLD_Service1 : GLD_Service
@end
@implementation GLD_Service
static GLD_Service *currentSerVice;
static dispatch_semaphore_t serviceLock;//创建lock,保证切换服务器线程安全
+ (instancetype)currentService{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
currentSerVice = [GLD_Service0 new];
serviceLock = dispatch_semaphore_create(1);
});
return currentSerVice;
}
+ (void)switchService{
[GLD_Service switchToService:currentSerVice.type + 1];
}
+ (void)switchToService:(gld_environmentType)serviceType{
dispatch_semaphore_wait(serviceLock, DISPATCH_TIME_FOREVER);
currentSerVice = [GLD_Service serviceWithType:serviceType % 3];
dispatch_semaphore_signal(serviceLock);
}
+ (GLD_Service *)serviceWithType:(gld_serviceType)type{
GLD_Service *service;
switch (type) {
case gldService0:
service = [[GLD_Service0 alloc]init];
break;
case gldService1:
service = [[GLD_Service1 alloc]init];
break;
}
service.type = type;
//切换服务器
#if DEBUG
service.environment = gld_environmentDevelop;
#else
service.environment = gld_environmentRelease;
#endif
return service;
}
- (NSString *)baseUrl{
switch (self.environment) {
case gld_environmentTest:
return [self testEnvironmentBaseUrl];
break;
case gld_environmentDevelop:
return [self developEnvironmentBaseUrl];
break;
case gld_environmentRelease:
return [self releaseEnvironmentBaseUrl];
break;
}
}
@end
@implementation GLD_Service0
- (NSString *)testEnvironmentBaseUrl {
return WEB_SERVICE_DEVELOP_BASEURL;
}
- (NSString *)developEnvironmentBaseUrl {
return WEB_SERVICE_DEVELOP_BASEURL;
}
- (NSString *)releaseEnvironmentBaseUrl {
return WEB_SERVICE_RELEASE_BASEURL;
}
@end
@implementation GLD_Service1
- (NSString *)testEnvironmentBaseUrl {
return WEB_SERVICE_DEVELOP_BASEURL;
}
- (NSString *)developEnvironmentBaseUrl {
return WEB_SERVICE_DEVELOP_BASEURL;
}
- (NSString *)releaseEnvironmentBaseUrl {
return WEB_SERVICE_RELEASE_BASEURL;
}
@end