* introduce send fragment * can pass a fin frame * can send messages which are a perfect multiple of the chunk size * set fin only for last fragment * cleanup * last fragment should be of type CONTINUATION * Add simple send and receive programs * speedups receiving + better way to wait for thing * receive speedup by using linked list of chunks instead of large array * document bug * use chunks to receive data * trailing spaces
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  *  IXSocketAppleSSL.h
 | |
|  *  Author: Benjamin Sergeant
 | |
|  *  Copyright (c) 2017-2018 Machine Zone, Inc. All rights reserved.
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "IXSocket.h"
 | |
| #include "IXCancellationRequest.h"
 | |
| 
 | |
| #include <Security/Security.h>
 | |
| #include <Security/SecureTransport.h>
 | |
| 
 | |
| #include <mutex>
 | |
| 
 | |
| namespace ix
 | |
| {
 | |
|     class SocketAppleSSL : public Socket
 | |
|     {
 | |
|     public:
 | |
|         SocketAppleSSL(int fd = -1);
 | |
|         ~SocketAppleSSL();
 | |
| 
 | |
|         virtual bool connect(const std::string& host,
 | |
|                              int port,
 | |
|                              std::string& errMsg,
 | |
|                              const CancellationRequest& isCancellationRequested) final;
 | |
|         virtual void close() final;
 | |
| 
 | |
|         virtual ssize_t send(char* buffer, size_t length) final;
 | |
|         virtual ssize_t send(const std::string& buffer) final;
 | |
|         virtual ssize_t recv(void* buffer, size_t length) final;
 | |
| 
 | |
|     private:
 | |
|         SSLContextRef _sslContext;
 | |
|         mutable std::mutex _mutex;  // AppleSSL routines are not thread-safe
 | |
|     };
 | |
| 
 | |
| }
 |