Twitch SDK (Internal)
java_socket.h
Go to the documentation of this file.
1 /********************************************************************************************
2 * Twitch Broadcasting SDK
3 *
4 * This software is supplied under the terms of a license agreement with Twitch Interactive, Inc. and
5 * may not be copied or used except in accordance with the terms of that agreement
6 * Copyright (c) 2012-2016 Twitch Interactive, Inc.
7 *********************************************************************************************/
8 
9 #pragma once
10 
11 #include "twitchsdk/core/socket.h"
13 
14 #include <jni.h>
15 
16 
17 namespace ttv
18 {
19  namespace binding
20  {
21  namespace java
22  {
23  class JavaSocketBase;
24  class JavaSocketFactoryBase;
25 
26  class JavaSocket;
27  class JavaSocketFactory;
28  class JavaWebSocket;
29  class JavaWebSocketFactory;
30  }
31  }
32 }
33 
34 
36 {
37 public:
38  virtual ~JavaSocketBase();
39 
41 
42 protected:
43  JavaSocketBase(JNIEnv* jEnv, jobject jInstance);
44 
45  void AllocateByteArray(size_t size);
46 
50  size_t mByteArraySize;
51 };
52 
53 
55 {
56 public:
57  GlobalJavaObjectReference& GetJavaInstance() { return mJavaInstance; }
58 
59 protected:
60  JavaSocketFactoryBase(JNIEnv* jEnv, jobject jInstance, jmethodID isProtocolSupportedId, jmethodID createMethodId);
61  virtual ~JavaSocketFactoryBase();
62 
63  bool IsProtocolSupported(const std::string& protocol);
64  TTV_ErrorCode CreateSocket(const std::string& uri, jobject& result);
65 
67 
68 private:
70  jmethodID mCreateMethodId;
71 };
72 
73 
75 {
76 public:
77  JavaSocket(JNIEnv* jEnv, jobject jInstance);
78  virtual ~JavaSocket();
79 
80  // ISocket implementation
81  virtual TTV_ErrorCode Connect() override;
82  virtual TTV_ErrorCode Disconnect() override;
83  virtual TTV_ErrorCode Send(const uint8_t* buffer, size_t length, size_t& sent) override;
84  virtual TTV_ErrorCode Recv(uint8_t* buffer, size_t length, size_t& received) override;
85  virtual uint64_t TotalSent() override;
86  virtual uint64_t TotalReceived() override;
87  virtual bool Connected() override;
88 };
89 
90 
92 {
93 public:
94  JavaSocketFactory(JNIEnv* jEnv, jobject jInstance);
95  virtual ~JavaSocketFactory();
96 
97  // ISocketFactory implementation
98  virtual bool IsProtocolSupported(const std::string& protocol) override;
99  virtual TTV_ErrorCode CreateSocket(const std::string& uri, std::shared_ptr<ISocket>& result) override;
100 };
101 
102 
104 {
105 public:
106  JavaWebSocket(JNIEnv* jEnv, jobject jInstance);
107  virtual ~JavaWebSocket();
108 
109  // IWebSocket implementation
110  virtual TTV_ErrorCode Connect() override;
111  virtual TTV_ErrorCode Disconnect() override;
112  virtual TTV_ErrorCode Send(MessageType type, const uint8_t* buffer, size_t length) override;
113  virtual TTV_ErrorCode Recv(MessageType& type, uint8_t* buffer, size_t length, size_t& received) override;
114  virtual TTV_ErrorCode Peek(MessageType& type, size_t& length) override;
115  virtual bool Connected() override;
116 
117 private:
119 };
120 
121 
123 {
124 public:
125  JavaWebSocketFactory(JNIEnv* jEnv, jobject jInstance);
126  virtual ~JavaWebSocketFactory();
127 
128  // IWebSocketFactory implementation
129  virtual bool IsProtocolSupported(const std::string& protocol) override;
130  virtual TTV_ErrorCode CreateWebSocket(const std::string& uri, std::shared_ptr<IWebSocket>& result) override;
131 };
size_t mByteArraySize
The size of mByteArrayInstance.
Definition: java_socket.h:50
TTV_ErrorCode CreateSocket(const std::string &uri, std::shared_ptr< ISocket > &result)
Definition: java_socket.h:103
Definition: socket.h:442
JavaSocketBase(JNIEnv *jEnv, jobject jInstance)
jmethodID mIsProtocolSupportedId
Definition: java_socket.h:69
GlobalJavaObjectReference mSocketInstance
The java implementation of the socket.
Definition: java_socket.h:47
Definition: java_socket.h:122
Definition: socket.h:290
TTV_ErrorCode CreateWebSocket(const std::string &uri, std::shared_ptr< IWebSocket > &result)
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
GlobalJavaObjectReference mByteArrayInstance
The scratch byte array.
Definition: java_socket.h:49
GlobalJavaObjectReference mJavaInstance
The java implementation of the factory.
Definition: java_socket.h:66
GlobalJavaObjectReference mSentReceivedResultContainer
Definition: java_socket.h:48
Definition: java_socket.h:54
jmethodID mCreateMethodId
Definition: java_socket.h:70
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
GlobalJavaObjectReference & GetJavaInstance()
Definition: java_socket.h:40
GlobalJavaObjectReference mMessageTypeResultContainer
Definition: java_socket.h:118
Definition: socket.h:181
Definition: java_socket.h:35
Definition: java_socket.h:74
Definition: socket.h:405
GlobalJavaObjectReference & GetJavaInstance()
Definition: java_socket.h:57
Definition: java_utility.h:216
MessageType
Definition: socket.h:296
Definition: java_socket.h:91