eventmachine 0.4.5 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,92 @@
1
+ /*****************************************************************************
2
+
3
+ $Id: ssl.h 2421 2006-04-29 23:48:49Z francis $
4
+
5
+ File: ssl.h
6
+ Date: 30Apr06
7
+
8
+ Copyright (C) 2006 by Francis Cianfrocca. All Rights Reserved.
9
+ Gmail: garbagecat20
10
+
11
+ This program is free software; you can redistribute it and/or modify
12
+ it under the terms of the GNU General Public License as published by
13
+ the Free Software Foundation; either version 2 of the License, or
14
+ (at your option) any later version.
15
+
16
+ This program is distributed in the hope that it will be useful,
17
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ GNU General Public License for more details.
20
+
21
+ You should have received a copy of the GNU General Public License
22
+ along with this program; if not, write to the Free Software
23
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24
+
25
+ *****************************************************************************/
26
+
27
+
28
+ #ifndef __SslBox__H_
29
+ #define __SslBox__H_
30
+
31
+
32
+
33
+
34
+
35
+ /******************
36
+ class SslContext_t
37
+ ******************/
38
+
39
+ class SslContext_t
40
+ {
41
+ public:
42
+ SslContext_t (bool is_server);
43
+ virtual ~SslContext_t();
44
+
45
+ private:
46
+ static bool bLibraryInitialized;
47
+
48
+ private:
49
+ bool bIsServer;
50
+ SSL_CTX *pCtx;
51
+
52
+ EVP_PKEY *PrivateKey;
53
+ X509 *Certificate;
54
+
55
+ friend class SslBox_t;
56
+ };
57
+
58
+
59
+ /**************
60
+ class SslBox_t
61
+ **************/
62
+
63
+ class SslBox_t
64
+ {
65
+ public:
66
+ SslBox_t (bool is_server);
67
+ virtual ~SslBox_t();
68
+
69
+ int PutPlaintext (const char*, int);
70
+ int GetPlaintext (char*, int);
71
+
72
+ bool PutCiphertext (const char*, int);
73
+ bool CanGetCiphertext();
74
+ int GetCiphertext (char*, int);
75
+
76
+ void Shutdown();
77
+
78
+ protected:
79
+ SslContext_t *Context;
80
+
81
+ bool bIsServer;
82
+ SSL *pSSL;
83
+ BIO *pbioRead;
84
+ BIO *pbioWrite;
85
+
86
+ PageList OutboundQ;
87
+ };
88
+
89
+
90
+
91
+ #endif // __SslBox__H_
92
+
@@ -1,4 +1,4 @@
1
- # $Id: eventmachine.rb 2380 2006-04-24 11:13:02Z francis $
1
+ # $Id: eventmachine.rb 2431 2006-04-30 22:17:20Z francis $
2
2
  #
3
3
  # Author:: blackhedd (gmail address: garbagecat20).
4
4
  # Date:: 8 Apr 2006
@@ -402,10 +402,14 @@ module EventMachine
402
402
  #
403
403
  #
404
404
  def EventMachine::start_server server, port, handler=nil
405
+ klass = if (handler and handler.is_a?(Class))
406
+ handler
407
+ else
408
+ Class.new( Connection ) {handler and include handler}
409
+ end
410
+
405
411
  s = start_tcp_server server, port
406
- @acceptors[s] = Class.new( Connection ) {
407
- handler and include handler
408
- }
412
+ @acceptors[s] = klass
409
413
  end
410
414
 
411
415
  # EventMachine#connect initiates a TCP connection to a remote
@@ -463,6 +467,25 @@ module EventMachine
463
467
  # }
464
468
  # puts "The event loop has ended"
465
469
  #
470
+ #
471
+ # There are times when it's more convenient to define a protocol handler
472
+ # as a Class rather than a Module. Here's how to do this:
473
+ #
474
+ # class MyProtocolHandler < EventMachine::Connection
475
+ # def initialize *args
476
+ # super
477
+ # # whatever else you want to do here
478
+ # end
479
+ #
480
+ # #.......your other class code
481
+ # end # class MyProtocolHandler
482
+ #
483
+ # If you do this, then an instance of your class will be instantiated to handle
484
+ # every network connection created by your code or accepted by servers that you
485
+ # create. If you redefine #post_init in your protocol-handler class, your
486
+ # #post_init method will be called _inside_ the call to #super that you will
487
+ # make in your #initialize method (if you provide one).
488
+ #
466
489
  #--
467
490
  # EventMachine::connect initiates a TCP connection to a remote
468
491
  # server and sets up event-handling for the connection.
@@ -487,10 +510,14 @@ module EventMachine
487
510
  # if at all possible.
488
511
  #
489
512
  def EventMachine::connect server, port, handler=nil
513
+
514
+ klass = if (handler and handler.is_a?(Class))
515
+ handler
516
+ else
517
+ Class.new( Connection ) {handler and include handler}
518
+ end
519
+
490
520
  s = connect_server server, port
491
- klass = Class.new( Connection ) {
492
- handler and include handler
493
- }
494
521
  c = klass.new s
495
522
  @conns[s] = c
496
523
  block_given? and yield c
@@ -736,6 +763,11 @@ class Connection
736
763
  end
737
764
 
738
765
 
766
+ def start_tls
767
+ EventMachine::start_tls @signature
768
+ end
769
+
770
+
739
771
  # send_datagram is for sending UDP messages.
740
772
  # This method may be called from any Connection object that refers
741
773
  # to an open datagram socket (see EventMachine#open_datagram_socket).
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: eventmachine
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.5
7
- date: 2006-04-27 00:00:00 -04:00
6
+ version: 0.5.1
7
+ date: 2006-05-05 00:00:00 -04:00
8
8
  summary: Ruby/EventMachine socket engine library
9
9
  require_paths:
10
10
  - lib
@@ -32,6 +32,7 @@ files:
32
32
  - tests/testem.rb
33
33
  - lib/eventmachine.rb
34
34
  - ext/binder.cpp
35
+ - ext/page.h
35
36
  - ext/cmain.cpp
36
37
  - ext/sigs.cpp
37
38
  - ext/rubymain.cpp
@@ -40,10 +41,13 @@ files:
40
41
  - ext/binder.h
41
42
  - ext/em.h
42
43
  - ext/ed.h
44
+ - ext/ssl.cpp
43
45
  - ext/project.h
44
46
  - ext/eventmachine.h
45
47
  - ext/em.cpp
46
48
  - ext/extconf.rb
49
+ - ext/page.cpp
50
+ - ext/ssl.h
47
51
  - README
48
52
  - RELEASE_NOTES
49
53
  - COPYING