Class: Baykit::BayServer::Docker::Ajp::Command::CmdForwardRequest

Inherits:
AjpCommand
  • Object
show all
Includes:
Protocol, Util
Defined in:
lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb

Class Attribute Summary collapse

Instance Attribute Summary collapse

Attributes inherited from AjpCommand

#to_server

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from AjpCommand

#pack_header

Constructor Details

#initializeCmdForwardRequest

Returns a new instance of CmdForwardRequest.



143
144
145
146
147
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 143

def initialize
  super(AjpType::FORWARD_REQUEST, true)
  @headers = Headers.new()
  @attributes = {}
end

Class Attribute Details

.attribute_name_mapObject (readonly)

Returns the value of attribute attribute_name_map.



37
38
39
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 37

def attribute_name_map
  @attribute_name_map
end

.method_mapObject (readonly)

Returns the value of attribute method_map.



35
36
37
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 35

def method_map
  @method_map
end

.well_known_header_mapObject (readonly)

Returns the value of attribute well_known_header_map.



36
37
38
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 36

def well_known_header_map
  @well_known_header_map
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



141
142
143
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 141

def attributes
  @attributes
end

#headersObject

Returns the value of attribute headers.



140
141
142
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 140

def headers
  @headers
end

#is_sslObject

Returns the value of attribute is_ssl.



139
140
141
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 139

def is_ssl
  @is_ssl
end

#methodObject

Returns the value of attribute method.



132
133
134
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 132

def method
  @method
end

#protocolObject

Returns the value of attribute protocol.



133
134
135
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 133

def protocol
  @protocol
end

#remote_addrObject

Returns the value of attribute remote_addr.



135
136
137
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 135

def remote_addr
  @remote_addr
end

#remote_hostObject

Returns the value of attribute remote_host.



136
137
138
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 136

def remote_host
  @remote_host
end

#req_uriObject

Returns the value of attribute req_uri.



134
135
136
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 134

def req_uri
  @req_uri
end

#server_nameObject

Returns the value of attribute server_name.



137
138
139
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 137

def server_name
  @server_name
end

#server_portObject

Returns the value of attribute server_port.



138
139
140
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 138

def server_port
  @server_port
end

Class Method Details

.get_attribute_code(atr) ⇒ Object



123
124
125
126
127
128
129
130
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 123

def self.get_attribute_code(atr)
  @attribute_name_map.keys.each do |key|
    if @attribute_name_map[key].casecmp?(atr)
      return key
    end
  end
  return -1
end

.get_method_code(method) ⇒ Object



70
71
72
73
74
75
76
77
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 70

def self.get_method_code(method)
  @method_map.keys.each do |key|
    if @method_map[key].casecmp? method
      return key
    end
  end
  return -1
end

.get_well_known_header_code(name) ⇒ Object



97
98
99
100
101
102
103
104
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 97

def self.get_well_known_header_code(name)
  @well_known_header_map.keys.each do |key|
    if @well_known_header_map[key].casecmp? name
      return key
    end
  end
  return -1
end

Instance Method Details

#handle(handler) ⇒ Object



189
190
191
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 189

def handle(handler)
  return handler.handle_forward_request(self)
end

#pack(pkt) ⇒ Object



153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 153

def pack(pkt)
  #BayLog.info("%s", self)
  acc = pkt.new_ajp_data_accessor()
  acc.put_byte(@type) # prefix code
  acc.put_byte(CmdForwardRequest.get_method_code(@method))
  acc.put_string(@protocol)
  acc.put_string(@req_uri)
  acc.put_string(@remote_addr)
  acc.put_string(@remote_host)
  acc.put_string(@server_name)
  acc.put_short(@server_port)
  acc.put_byte(@is_ssl ? 1 : 0)
  write_request_headers(acc)
  write_attributes(acc)

  #  must be called from last line
  super
end

#to_sObject



149
150
151
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 149

def to_s()
  return "ForwardRequest(m=#{self.method} p=#{self.protocol} u=#{self.req_uri} ra=#{self.remote_addr} rh=#{self.remote_host} sn=#{self.server_name} sp=#{self.server_port} ss=#{self.is_ssl} h=#{self.headers}"
end

#unpack(pkt) ⇒ Object



172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# File 'lib/baykit/bayserver/docker/ajp/command/cmd_forward_request.rb', line 172

def unpack(pkt) 
  super
  acc = pkt.new_ajp_data_accessor()
  acc.get_byte() # prefix code
  @method = CmdForwardRequest.method_map[acc.get_byte]
  @protocol = acc.get_string
  @req_uri = acc.get_string
  @remote_addr = acc.get_string
  @remote_host = acc.get_string
  @server_name = acc.get_string
  @server_port = acc.get_short
  @is_ssl = acc.get_byte == 1

  read_request_headers(acc)
  read_attributes(acc)
end