单军华
2018-05-04 25f409185a53e5e7beb17518a684298d92d31b3f
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
//
//  IClientSocket.h
//  GoldRich
//
//  Created by WindShan on 2017/3/8.
//  Copyright © 2017年 WindShan. All rights reserved.
//
 
#ifndef IClientSocket_h
#define IClientSocket_h
 
#import "ClientSocket.h"
#import "NetStream.h"
 
#include <string.h>
using namespace std;
 
class CClientSocket;
class CNetStream;
 
typedef void (*on_connect_success)();
typedef void (*on_connect_time_out)();
typedef void (*on_connect_error)();
typedef void (*on_receive_package)(CNetStream* pStream);
 
class IClientSocket
{
public:
    IClientSocket(void)
    {
        pSocket = new CClientSocket();
    }
    ~IClientSocket(void)
    {
        if (pSocket != nullptr)
        {
            delete pSocket;
            pSocket = nullptr;
        }
    }
public:
    static int  InitSockEnv()
    {
        return CClientSocket::InitSockEnv();
    }
    
    static void UninitSockEnv()
    {
        CClientSocket::UninitSockEnv();
    }
    
    
    int Connect(const char* ip,short port,int outTime,on_connect_success sc,on_connect_time_out tm,on_connect_error er,on_receive_package re)
    {
        if (pSocket != nullptr)
        {
            return pSocket->Connect(ip,port,outTime,sc,tm,er,re);
        }
        
        return -1;
    }
    int SendStream(CNetStream* pStream)
    {
        if (pSocket != nullptr)
        {
            return pSocket->SendStream(pStream);
        }
        
        return -1;
    }
    int Close()
    {
        if (pSocket != nullptr)
        {
            return pSocket->Close();
        }
        
        return -1;
    }
    int process() //you should call this function in circle
    {
        if (pSocket != nullptr)
        {
            pSocket->process();
        }
        
        return -1;
    }
    
private:
    CClientSocket* pSocket;
};
 
#endif /* IClientSocket_h */