good morning;
On 2011-10-30, at 11:14 , Nikodemus Siivola wrote:
> On 22 September 2011 12:47, james anderson <james.anderson@...>
> wrote:
>
>> i attach one below, with the proviso, that it does little to indicate
>> the operation of the type predicates.
>
> Thanks.
>
> Getting back on this...
>
>> 5: (ERROR
>> SIMPLE-TYPE-ERROR
>> :DATUM
>> #<AMQP-1-1-0-9-1:CHANNEL [#<PURI:URI amqp://hetzner.dydra.com/
>> >].1 {100AFAD8B1}>
>> :EXPECTED-TYPE
>> AMQP:CHANNEL
>> :FORMAT-CONTROL
>> "SHARED-INITIALIZE: the CHANNEL argument (~s) must be of type
>> AMQP:CHANNEL."
>> :FORMAT-ARGUMENTS
>> (#<AMQP-1-1-0-9-1:CHANNEL [#<PURI:URI amqp://hetzner.dydra.com/
>> >].1 {100AFAD8B1}>))
>
> I presume your SHARED-INITIALIZE has something like
>
> (unless (typep x 'channel)
> (error ...))
>
> in it. Can you send the exact source for the method in question -- or
> at least the parts up to this point.
the system in question is on github [https://github.com/lisp/
de.setf.amqp]. that function is the shared-initialize for amqp:basic
[https://github.com/lisp/de.setf.amqp/blob/master/classes.lisp]
>
> Results of
>
> (describe 'channel)
>
> could be of interest as well.
in the abstract, that would be
* (describe 'amqp:channel)
AMQP:CHANNEL
[symbol]
CHANNEL names a generic function:
Lambda-list: (DESIGNATOR &REST ARGS)
Derived type: (FUNCTION (T &REST T) *)
Documentation:
Construct a CHANNEL given initialization arguments. The
first argument may be a keyword, in which case the value of
*CLASS.CHANNEL* designate the
class, or it may be a class designator. In other cases, the
first argument
is interpreted as a context to dereference the respective CHANNEL.
Method-combination: STANDARD
Methods:
(CHANNEL (AMQP:OBJECT))
(CHANNEL ((EQL T)))
(CHANNEL (AMQP:CHANNEL))
(CHANNEL (LIST))
Documentation:
given a list, spread it and recurse.
(CHANNEL (SYMBOL))
Source file: SYS:SRC;PCL;DFUN.LISP.NEWEST
CHANNEL names the standard-class #<STANDARD-CLASS AMQP:CHANNEL>:
Documentation:
The abstract channel class is specialized for each protocol
version.
Each channel is associated with a connection and identified by
channel-number.
Once a channel is opened, it serves as the context for message-
and stream-based operations.
Class precedence-list: AMQP:CHANNEL,
DE.SETF.AMQP.IMPLEMENTATION::AMQP-CONNECTED-
OBJECT,
AMQP:OBJECT,
DE.SETF.AMQP.UTILITY:AMQP-CONNECTION-DEVICE,
DE.SETF.AMQP.UTILITY:AMQP-DEVICE,
SB-SIMPLE-STREAMS:DUAL-CHANNEL-SIMPLE-STREAM,
SB-SIMPLE-STREAMS:SIMPLE-STREAM,
STANDARD-OBJECT, SB-PCL::SLOT-OBJECT,
STREAM, T
Direct superclasses: DE.SETF.AMQP.IMPLEMENTATION::AMQP-CONNECTED-
OBJECT,
DE.SETF.AMQP.UTILITY:AMQP-CONNECTION-DEVICE
Direct subclasses: AMQP-1-1-0-8-0:CHANNEL, AMQP-1-1-0-9-1:CHANNEL
Direct slots:
DE.SETF.AMQP.IMPLEMENTATION::CONTEXT
Readers: DE.SETF.AMQP.UTILITY:CHANNEL-CONNECTION
PURI:URI
Readers: DE.SETF.AMQP.UTILITY:CHANNEL-URI
DE.SETF.AMQP.IMPLEMENTATION::NAME
Initform: (GENSYM "channel")
Readers: DE.SETF.AMQP.UTILITY:CHANNEL-NAME
NUMBER
Type: FIXNUM
Initargs: :NUMBER
Initform: (ERROR "number required")
Readers: DE.SETF.AMQP.UTILITY:CHANNEL-NUMBER
Writers: DE.SETF.AMQP.IMPLEMENTATION::SETF-CHANNEL-NUMBER
DE.SETF.AMQP.IMPLEMENTATION::TRACK
Initargs: :TRACK
Initform: 0
Readers: DE.SETF.AMQP.UTILITY:CHANNEL-TRACK
DE.SETF.AMQP.IMPLEMENTATION::STATE
Type: AMQP.S:CHANNEL-STATE
Initform: AMQP.S:OPEN-CHANNEL
DE.SETF.AMQP.IMPLEMENTATION::THREAD
Initform: (BORDEAUX-THREADS:CURRENT-THREAD)
Readers: DE.SETF.AMQP.UTILITY:CHANNEL-THREAD
Documentation:
The thread which processes this channel.
Likely, the thread which created it.
DE.SETF.AMQP.IMPLEMENTATION::CONDITIONS
Readers: DE.SETF.AMQP.UTILITY:CHANNEL-CONDITIONS
Writers: (SETF DE.SETF.AMQP.UTILITY:CHANNEL-CONDITIONS)
Documentation:
Caches conditions raised on the channel for re-use.
DE.SETF.AMQP.IMPLEMENTATION::COMMAND-HANDLER
Documentation:
Binds a handler function, with the signature (class method
&rest arguments),
which are applied when handle-channel-methods.
DE.SETF.AMQP.IMPLEMENTATION::REALM
Initargs: :REALM
Readers: DE.SETF.AMQP.UTILITY:CHANNEL-REALM
Documentation:
Should the protocol support/reauire realms, the channel
negotiates access
as a late step in the device-open procedure and bind both
the realm and the tick for future use.
The channel's realm comprises the realm proper +value
exclusive passive active write read
DE.SETF.AMQP.IMPLEMENTATION::TICKET
Initargs: :TICKET
Readers: DE.SETF.AMQP.UTILITY:CHANNEL-TICKET
Writers: (SETF DE.SETF.AMQP.UTILITY:CHANNEL-TICKET)
Documentation:
Should the protocol support/reauire realms, the channel
negotiates access
as a late step in the device-open procedure and bind both
the realm and the tick for future use.
DE.SETF.AMQP.IMPLEMENTATION::CONTENT-OBJECT
Readers: DE.SETF.AMQP.UTILITY:CHANNEL-CONTENT-OBJECT
Writers: (SETF DE.SETF.AMQP.UTILITY:CHANNEL-CONTENT-OBJECT)
Documentation:
The most recent class which contained (the current) content.
Updated by respond to typed-frame, but not cleared.
DE.SETF.AMQP.IMPLEMENTATION::ACKNOWLEDGE-MESSAGES
Readers: DE.SETF.AMQP.UTILITY:CHANNEL-ACKNOWLEDGE-MESSAGES
Writers: (SETF DE.SETF.AMQP.UTILITY:CHANNEL-ACKNOWLEDGE-MESSAGES)
Documentation:
Indicates whether no-ack was selected when a a message was
requested via Consume or Get. If selected, then each receipt
is automatically
acknowledged as the last step of the respond-to operation.
DE.SETF.AMQP.IMPLEMENTATION::AMQP-BASIC
Type: (OR NULL AMQP:BASIC)
Readers: DE.SETF.AMQP.IMPLEMENTATION::GET-CHANNEL-BASIC
Writers: DE.SETF.AMQP.IMPLEMENTATION::SETF-CHANNEL-BASIC
Documentation:
Caches the channel basic instance.
DE.SETF.AMQP.IMPLEMENTATION::AMQP-BODY
Type: (OR NULL AMQP:BODY)
Readers: DE.SETF.AMQP.IMPLEMENTATION::GET-CHANNEL-BODY
Writers: DE.SETF.AMQP.IMPLEMENTATION::SETF-CHANNEL-BODY
Documentation:
Caches the channel body instance.
DE.SETF.AMQP.IMPLEMENTATION::AMQP-EXCHANGES
Type: LIST
Readers: DE.SETF.AMQP.IMPLEMENTATION::GET-CHANNEL-EXCHANGES
Writers: DE.SETF.AMQP.IMPLEMENTATION::SETF-CHANNEL-EXCHANGES
Documentation:
Caches the channel exchange instances by exchange name.
DE.SETF.AMQP.IMPLEMENTATION::AMQP-FILE
Type: (OR NULL AMQP:FILE)
Readers: DE.SETF.AMQP.IMPLEMENTATION::GET-CHANNEL-FILE
Writers: DE.SETF.AMQP.IMPLEMENTATION::SETF-CHANNEL-FILE
Documentation:
Caches the channel file instance.
DE.SETF.AMQP.IMPLEMENTATION::AMQP-HEADER
Type: (OR NULL AMQP:HEADER)
Readers: DE.SETF.AMQP.IMPLEMENTATION::GET-CHANNEL-HEADER
Writers: DE.SETF.AMQP.IMPLEMENTATION::SETF-CHANNEL-HEADER
Documentation:
Caches the channel header instance.
DE.SETF.AMQP.IMPLEMENTATION::AMQP-QUEUES
Type: LIST
Readers: DE.SETF.AMQP.IMPLEMENTATION::GET-CHANNEL-QUEUES
Writers: DE.SETF.AMQP.IMPLEMENTATION::SETF-CHANNEL-QUEUES
Documentation:
Caches channel queues according to queue name.
DE.SETF.AMQP.IMPLEMENTATION::AMQP-STREAM
Type: (OR NULL AMQP:STREAM)
Readers: DE.SETF.AMQP.IMPLEMENTATION::GET-CHANNEL-STREAM
Writers: DE.SETF.AMQP.IMPLEMENTATION::SETF-CHANNEL-STREAM
Documentation:
Caches the channel stream instance.
DE.SETF.AMQP.IMPLEMENTATION::AMQP-TX
Type: (OR NULL AMQP:TX)
Readers: DE.SETF.AMQP.IMPLEMENTATION::GET-CHANNEL-TX
Writers: DE.SETF.AMQP.IMPLEMENTATION::SETF-CHANNEL-TX
Documentation:
Caches the channel tx instance.
* (amqp:with-open-connection (connection :uri *broker-uri*)
(amqp:with-open-channel (io connection)
(describe io)))
#<AMQP-1-1-0-9-1:CHANNEL [#<PURI:URI amqp://hetzner.dydra.com/>].1 {1..
[standard-object]
Slots with :CLASS allocation:
ID = 20
PROTOCOL-VERSION = :AMQP-1-1-0-9-1
PROPERTY-SLOT-NAMES = NIL
ARGUMENT-SLOT-NAMES = (AMQP::RESERVED-1 AMQP::ACTIVE
AMQP::REPLY-CODE AMQP::REPLY-TEXT..
METHOD-NAMES = (AMQP:OPEN AMQP:OPEN-OK AMQP:FLOW
AMQP:FLOW-OK AMQP:CLOSE AMQP:CLOSE-OK)
VERSION = :AMQP-1-1-0-9-1
RESERVED-1 = ""
Slots with :INSTANCE allocation:
%FLAGS = 15
PLIST = NIL
J-LISTEN = #<FUNCTION
DE.SETF.AMQP.IMPLEMENTATION::AMQP-J-LISTEN>
J-READ-CHAR = #<FUNCTION
DE.SETF.AMQP.IMPLEMENTATION::AMQP-J-READ-CHAR>
J-READ-CHARS = #<FUNCTION
DE.SETF.AMQP.IMPLEMENTATION::AMQP-J-READ-CHARS>
J-WRITE-CHAR = #<FUNCTION
DE.SETF.AMQP.IMPLEMENTATION::AMQP-J-WRITE-CHAR>
J-WRITE-CHARS = #<FUNCTION
DE.SETF.AMQP.IMPLEMENTATION::AMQP-J-WRITE-CHARS>
J-UNREAD-CHAR = #<FUNCTION
DE.SETF.AMQP.IMPLEMENTATION::AMQP-J-UNREAD-CHAR>
OC-STATE = NIL
CO-STATE = NIL
EXTERNAL-FORMAT = #<SB-SIMPLE-STREAMS::EXTERNAL-
FORMAT ISO8859-1 {1001EEC1E1}>
INPUT-HANDLE = #<AMQP-1-1-0-9-1:CONNECTION
{100776C0C1}>
OUTPUT-HANDLE = #<AMQP-1-1-0-9-1:CONNECTION
{100776C0C1}>
CONTROL-IN = NIL
CONTROL-OUT = NIL
MELDED-STREAM = #<AMQP-1-1-0-9-1:CHANNEL
[#<PURI:URI amqp://hetzner.dydra.com/>].1 {1..
MELDING-BASE = #<AMQP-1-1-0-9-1:CHANNEL
[#<PURI:URI amqp://hetzner.dydra.com/>].1 {1..
ENCAPSULATED-CHAR-READ-SIZE = 0
LAST-CHAR-READ-SIZE = 0
CHARPOS = 0
RECORD-END = NIL
BUFFER = #(0 10 0 41 0 0 0 2 0 0 0 0 114 111
100 117 99 116 83 0 0 0 8 82 97 98..
BUFFPOS = 0
BUFFER-PTR = 0
BUF-LEN = 4088
PENDING = NIL
HANDLER = NIL
OUT-BUFFER = #(0 10 0 40 1 47 0 0 16 0 0 0 73 78
0 0 0 45 0 72 69 84 90 78 69 82 10..
OUTPOS = 0
MAX-OUT-POS = 4088
URI = #<PURI:URI amqp://hetzner.dydra.com/>
BODY-POSITION = 0
BODY-LENGTH = 0
FRAME-POSITION = 0
FREE-INPUT-FRAMES =
#<DE.SETF.AMQP.IMPLEMENTATION::LOCKED-STACK #<AMQP:CONNECTION FREE-INP..
FREE-OUTPUT-FRAMES =
#<DE.SETF.AMQP.IMPLEMENTATION::LOCKED-STACK #<AMQP:CONNECTION FREE-OUT..
READ-FRAMES =
#<DE.SETF.AMQP.IMPLEMENTATION::LOCKED-QUEUE #<AMQP:CONNECTION READ-FRA..
ENCODED-FRAMES =
#<DE.SETF.AMQP.IMPLEMENTATION::LOCKED-QUEUE #<AMQP:CONNECTION ENCODED-..
CONTENT-TYPE = #<MIME:TEXT/PLAIN {1001AE32B1}>
ELEMENT-TYPE = CHARACTER
ENCODER = #<FUNCTION (FLET
DE.SETF.UTILITY.IMPLEMENTATION::ISO-8859-1-ENCODE) {1..
DECODER = #<FUNCTION (FLET
DE.SETF.UTILITY.IMPLEMENTATION::ISO-8859-1-DECODE) {1..
STATE = #<AMQP.S:USE-CHANNEL {1001AE3B91}>
LINE-BUFFER = ""
EOF-MARKER = :EOF
EOL-MARKER = #\Newline
FRAME = NIL
CONTEXT = #<AMQP-1-1-0-9-1:CONNECTION
{100776C0C1}>
NAME = #:|channel1557|
NUMBER = 1
TRACK = 0
THREAD = #<SB-THREAD:THREAD "initial thread"
RUNNING {1007020CB1}>
CONDITIONS = NIL
COMMAND-HANDLER = NIL
REALM = NIL
TICKET = NIL
CONTENT-OBJECT = NIL
ACKNOWLEDGE-MESSAGES = NIL
AMQP-BASIC = NIL
AMQP-BODY = NIL
AMQP-EXCHANGES = NIL
AMQP-FILE = NIL
AMQP-HEADER = NIL
AMQP-QUEUES = NIL
AMQP-STREAM = NIL
AMQP-TX = NIL
OPEN-METHOD = #<AMQP-1-1-0-9-1:CHANNEL.OPEN
{10077CD1A1}>
OPEN-OK-METHOD = #<AMQP-1-1-0-9-1:CHANNEL.OPEN-OK
{1007907501}>
FLOW-METHOD = NIL
FLOW-OK-METHOD = NIL
CLOSE-METHOD = NIL
CLOSE-OK-METHOD = NIL
ACTIVE = NIL
REPLY-CODE = 0
REPLY-TEXT = ""
CLASS-ID = 0
METHOD-ID = 0
*
best regards,
|