Ezra Pound's "parleyings with Browning" are most apparent in the conception of the earliest Cantos. 1 Pound left little other direct commentary on the ways in which Browning's work influenced his own literary endeavors, although he frequently acknowledged Browning to be among the greatest poetic geniuses since Dante, one of the few that modern England had brought forth. 2 It has often been noted that Pound's early poetry imitates Browning's masks and the convolutions, colloquial tone, and rich, rugged rhythm of Browning's style. In his poem "Mesmerism" from 1906 Pound pays parodic tribute: "Here's to you, Old Hippety-Hop o' the accents." 3 The tone of Three Cantos 1, where Pound stages his exasperating effort of comprehending Browning's Sordello, is still dominated by such a self- ironizing admixture of irreverence and admiration. 4 Yet, Three Cantos also gives more complex testimony, both of Pound's deep indebtedness to Browning and of his struggle for poetic originality. Designed to be the exordium of Pound's modern epic, Three Cantos 1 in its first lines evokes Browning's Sordelloas a precursor text that is the unique example for a new form: a "bag of tricks" for poetic renewal, "a rag-bag" for modern consciousness, a theater for disembodied speech.
Hang it all, there can be but one Sordello!
But say I want to, say I take your whole bag of tricks,
Let in your quirks and tweeks, and say the thing's an art-form,
Your Sordello, and that the modern world
Needs such a rag-bag to stuff all its thought in;
Say I dump my silvery catch, shiny and silvery
As fresh sardines slapping and slipping on the marginal cobbles?
(I stand before the booth, the speech; but the truth
Is inside this discourse--this booth is full of the marrow of wisdom.) 5
Quarreling with his muse, throughout Three Cantos 1, Pound points out Browning's "quirks and tweeks," the jarring idiosyncrasies of his poetry. A few lines offer a parody à la "Mesmerism": "Tower by tower / Red-brown the rounded bases, and the plan / Follows the builder's whim. Beaucaire's slim gray / Leaps from the stubby base of Altaforte" (P, 229). 6 Others comment directly on Sordello's confoundingly convoluted, allusive language and risky rhyming of the seemingly incompatible: "What a hodge podge you have made there!--/ Zanze and swanzig, of all opprobrious rhymes!" (P, 232). 7 Yet it is precisely this daring strategy of assembling the disparate that Pound finds intriguing. He suggests that Browning created a text that borders on the grotesque: half epic, half burlesque romance--"The rough men swarm out / In robes that are half Roman, half like the Knave of Hearts"(P, 229).He particularly dwells on Browning's montage of historical res, facts, events, and settings. He knowingly appraises Browning's "bag of tricks," devices for putting historical and literary tradition to free poetic use, as he points out that Browning falsely implied Sordello to be Dante's sole forerunner that he borrowed from Arnaut Daniel (whom Pound in turn had portrayed as a forerunner of Dante's in The Spirit of Romance) "that trick / Of the unfinished address," and that Browning disregards chronology:
And half your dates are out, you mix your eras;
For that great font Sordello sat beside--
'Tis an immortal passage, but the font?--
Is some two centuries out of the picture.
[P, 229] 8
Alluding to the rags of Sordello's narrator's motley dress, Pound labels a "rag-bag" Browning's technique of employing background materials, his drawing together bits and pieces into a plethora of textual and historical details. Pound implies that Browning has given him a good excuse for similarly pouring out on the public shore whatever he has gathered from the ocean of his readerly consciousness.
Say I dump my catch, shiny and silvery
As fresh sardines flapping and slipping on the marginal cobbles.
[P, 229] 9
While Pound was not to retain this image in later versions of The Cantos, it is a metaphor for the technique he sets out to develop: the collecting of luminous concretenesses from the poet's store of knowledge for the rag-and-bone-shop of modernity.
The first decade of The Cantos's composition and revision has offered critics a natural place to look for the formative ideas behind the work as a whole. 10 Various critics have dwelt on the fact that the drastic reduction of allusions to Sordello coincides with an elliptical compression of Pound's language that helped introduce a new era in modernist writing. One common conclusion has been that Pound exorcised Browning from his Cantos in order to replace his own Browningesque "quirks and tweeks" with an original, modern poetic form. 11 More recent criticism, most notably Mary Ellen Gibson's, has tended to acknowledge that neither in his letters and critical prose, where he returned to him again and again as a point of reference, nor in his poetry did Pound ever completely turn away from Browning. 12 Pound's reading of Sordelloin Three Cantos indeed reveals how Pound explicitly worked his way toward remaking Browning, rather than exorcising him. Pound regards Sordellosimultaneously as a particular text and as an "art-form." Only with great difficulty, Pound seems to say, can this form be abstracted from Sordello and applied to Pound's own composition. Pound writes to his father in 1915 that Sordello is a "great work and worth the trouble of hacking it out" (quoted in GEPC, 75). In Three Cantos 1, he exhorts himself that in order to remake Sordello, rather than to incise it or scratch away at its surface, he needs to penetrate it, to chisel out its core:
(I stand before the booth, the speech; but the truth
Is inside this discourse-this booth is full of the marrow of wisdom.)
Give up th' intaglio method.
[P, 229]
As Ronald Bush has pointed out, Pound apparently was one of the first readers fully to understand that Sordello's initial narrator is the poet as a motley fool in a marketplace, who, having propped up his show-booth and summoned up a community of dead poets as his audience, keeps himself "out of view," hidden inside the booth in which he sets out to "make speak . . . the very man [Sordello] as he was wont to do" (S, 1, 15- 16). The poetic self has disappeared inside its stage, the unfolding discourse itself. In Three Cantos, Pound directs our view to this process and fathoms its implications for his own art.
The ur-Cantos explicitly discuss Pound's preoccupation with finding a poetic self, which was evident also in his previous experimentation with Browningesque dramatic masks. In 1969, Hugh Witemeyer drew attention to Pound's investigation of virtù, a concept he derived from Renaissance poets through Walter Pater: of how he could create a unified, idiosyncratic, and yet disembodied, transsubjective, poetic force. 13 Pound's idea of virtù, Witemeyer has convincingly argued, in essence underlay all of his subsequent aesthetic terminology, from "vortex" and "image" to "ideogram" and "paideuma." Yet Witemeyer did not acknowledge Browning's significance for this continuity within Pound's aesthetic. "Pound did not leap full-grown from the brow of Browning," Witemeyer asserted, claiming that, in order to come of age as a poet, Pound first had to move beyond Sordello toward Joyce, and beyond Browning's personae (which, he argued, never serve "as a means of self-construction" but "relive all the possible attitudes of the human spirit") toward a modernist construction of poetic selfhood. 14 What is missing from Witemeyer's account is what Christine Froula has since supplied: an acknowledgement that Sordellois a transitional, proto-modernist text. 15 As the following shall show, Pound saw what he understood by virtù already contemplated in Browning. The effort to create an idiosyncratic poetic self whose expressive power transcends subjectivity toward a stronger recreation of cultural reality is already at the heart both of Sordello's narrative and technique.
Witemeyer's assessment that Browning's personae never serve "as a means of self-construction" does not entirely agree with Pound's reading of Sordelloin Three Cantos 1. There, Pound quotes from a brief address prefacing the revised 1863 edition of Sordello, in which Browning chose to highlight that Sordello was "the story of the development of a soul."
So you worked out new form, the meditative,
Semi-dramatic, semi-epic story,And we will say: What's left for me to do?
[P, 231]
Pound recognizes that Browning's poem gives both epic and dramatic dimensions to a half-historical, half-fictional narrative in the form of a Dantesque transcendental journey--a journey, as Pound also understands, that recasts the author's own making and history of meta-poetic meditations.
You had your business:
To set out so much thought, so much emotion;
To paint, more real than any dead Sordello,
The half or third of your intensest life
And call that third Sordello;
And you'll say, "No, not your life,
He never showed himself." Is't worth the evasion, what were the use
Of setting res up and breathing life upon them,
Were't not our life, your life, my life extended?
[P, 229-30]
What Pound ponders here are the complications in Browning's mediation of poetic self. He wonders at the ways in which Browning's poem is a means of self-construction while it simultaneously strives to live up to the poetic ideal Browning had developed in his "Essay on Shelley": the ideal of a poetic objectivity that would synthesize the poet's subjectivity with transpersonal truth. 17
Many critics have pointed out that Browning's "story of a development of a soul" throughout at least the first three books of the poem closely resembles his own endeavor to overcome Shelley's Promethean subjectivism. 18 The last third of Book 1 introduces young Sordello at Goito, an idyllic castle in the country near Mantua, secluded from the town by a "slough" and "pine tree forests" (S, 1, 374). There, under the tutelage of the Ghibelline countess Adelaide, Sordello enjoys a sheltered upbringing reminiscent of Browning's own, which he passed in the household of his parents and among the books of his father's library. Sordello is surrounded by playful architecture, art objects, and a pastoral garden landscape charged with the inviting mystique that a childlike imagination projects. 19 Recalling his own poetic beginnings under the influence of Romanticism, Browning casts himself in the form of a young Sordello "less like a Troubadour than one of Shelley's protagonists," open to the influx of divine inspiration (GEPC, 83).
Up and down
Runs arrowy fire, while earthly forms combine
To throb the secret forth; a touch divine--
And the scaled eyeball owns the mystic rod;
Visibly through his garden walketh God.
[S, 1, 500-505]
According to the "legend" of Romanticism the true genius, like Shelley's Prometheus, defies the gods with his own transcendental aspirations (S, 1, 516). This early life is for the first time overshadowed by crisis when the question arises how the poet can really be "equal to being all" without taking charge in the present affairs of his people (cf. S, 1, 535-47, as quoted below).Affairs in Northern Italy around 1224--the turmoil of Guelf and Ghibelline partisanship, particularly the Ghibelline general Taurello Salinguerra's climactic capture of the Guelf Count Boniface in the long-besieged Ferrara, and the effects of civil warfare on the spirit of the divided population in Verona--have been dramatized throughout most of the preceding portions of Book 1. Now the narrator instructs himself: "Go back to the beginning, rather; blend / It gently with Sordello's life" (S, 1, 597-8). In his "drowsy Paradise," Sordello grows a poetic soul increasingly inclined, as Browning was himself, to observe the warts of nature, the monstrosity of particulars, giving "to familiar things a face grotesque; / Only, preserving through the mad burlesque / A grave regard" (S, 1, 267; S, 1, 655-57). While he is thus developing the first traces of his own virtù, Sordello's true initiation begins only as his yearnings for an audience urge him to penetrate the forests that surround him in his seclusion, to go to Mantua to become a Troubadour. There, Sordello defeats his forerunner, the celebrated Troubadour Eglamor, in a spontaneous contest, a victory that leads to Eglamor's death and wins Sordello Palma's favor--his palm/Palma, reminiscent of the Petrarchan laurel/Laura--and appointment as her Trouvere. Confronted with an audience, Sordello gives up demanding that "'each shall love in me the love that leads / His soul to power's perfection'" (S, 2, 439-40). His goal becomes to achieve a more objective poetry that would, in the very expression of poetic self, render a realistic and thus morally responsible picture of the all of human experience. He takes on the task of reaching out to the actual world of living men: of authentically portraying the struggles of the individual existence through his crafting of dramatic personae and speech (cf. S, 2, 568-87).
Yet, as Pound notes, in Sordellothis struggle for a new aesthetic is not only mediated by the story of strife and repeated disappointments, or the "marrow" of the meta-poetic discourse; it is also enacted in narrative, dramatic, and poetic technique. If the presentation of Sordello includes from the start that of Browning's own aesthetic becoming, it likewise includes a plurality of articulations, a multitude of beings, a community of voices, because the voice of the poem's evanescent motley narrator, who is also a stand-in for the poet, is open to all kinds of intrusions.
So, homage, other souls direct
Without, turns inward. "How should this deject
Thee, soul?" they murmur; "wherefore strength be quelled
Because, its trivial accidents withheld,
Organs are missed that clog the world, inert,
Wanting in will, to quicken and exert
Like thine--existence cannot satiate,
Cannot surprise? Laugh thou at envious fate,
Who, from earth's simplest combination stampt
With individuality--uncrampt
By living its faint elemental life,
Dost soar to heaven's complexest essence, rife
With grandeurs, unaffronted to the last
Equal to being all!"
[S, 1, 535-47]
Here we find yet another version of the poet's self speaking, the "meditative" voice, in Pound's phrase, in which contemplations on the literary history of ideas mingle with scenes of Sordello's upbringing, and then moreover the "murmur" of a chorus of speakers is quoted, perhaps the ghosts of the Romantics. Their speech is then objected to by what seems to be still another guise of the narrative voice, the race of men addressing Sordello:
In truth? Thou hast
Life then--wilt challenge life for us: our race
Is vindicated so, obtains its place
In thy ascent, the first of us; whom we
May follow, to a meanest, finally,
With our more bounded wills?
[S, 1, 548-53]
The motley speaker is the presiding narrator of the poem not so much as the caricature that we actually see at the beginning of the poem, but as the idea of the poet-self that overarches the poem's dramatic technique. He embodies the poet not only clothed in the garment of the poem's time, but altogether made up of patchwork, a theatrical multitude. Like Browning in Sordello and his dramatic monologues, the motley speaker speaks through the ghosts of the past he summons, precursor poets and historical res, and is spoken through by them. His voice is a stage for the presence of the past--"Ghosts move about me / Patched with histories," comments his reader Pound. Sordello, which Pound called "one of the finest masks ever presented," finally sets an example for Pound. 20 In it, the poet is poetic subject and object alike, and self is visibly transformed into a composite artifact, the text itself: "To paint, more real than any dead Sordello, / The half or third of your intensest life / And call that third Sordello" (P, 229-30).
Mary Ellis Gibson gives us what may be the definitive reading of Pound's negotiation of Browningesque selfhood when, in her 1995 study Epic Reinvented: Ezra Pound and the Victorians, sheargues that, in the model of the poet as ragpicker that Pound adopts from Browning, poetic self-creation and the epic quest for a renewal of the poetic canon are one. 21 In any event, the question of how the poet realizes his virtù and thus makes tradition new--how the individual poet res among and in turn affects the guise of those ghosts of literary history he summons--is not only the central question in Three Cantosbut already a topos in Sordelloitself. In the early stages of his poetic making at Goito, Sordello's talent is still overshadowed by his awe for the mighty Troubadour Eglamor at the Mantuan court, as well as Sordello's overall indebtedness to the literary past: "nor bid / Me rag by rag expose how patchwork hid / The youth--what thefts of every clime and day / Contributed to purfle the array / He climbed with" (S, 1, 897-901). Browning's poetic self emerging in the mask of Sordello here explicitly resembles the speaker's motley dress. Sordello's patchwork in this instance is still a sign of poverty of mature wit, a fault against which Pound warns his fellow poets in his early criticism, probably with his own endeavors to overcome his "Browningese" in mind: in "A Retrospect," a collection of earlier pieces of criticism published in Pavannes and Divisions in 1918, he writes, "Don't allow 'influence' to mean merely that you mop up the particular decorative vocabulary of some one or two poets whom you happen to admire." 22 Browning's poem suggests a much more complex, transhistorical model of literary influence that anticipates Pound's. The elder troubadour Eglamor is to Sordello what Shelley is to Browning, and eventually Browning to Pound. Dante and Shelley are to Browning's Sordellowhat Sordello is to the Purgatory and eventually Browning to The Cantos, a ghost conjured up fleetingly, but whose work offers itself throughout for use and revision to the present poet.
In Three Cantos 1, Pound looks for a suitable persona to integrate such complex relationships:
What's left for me to do?
Whom shall I conjure up; who's my Sordello,
My pre-Daun Chaucer, pre-Boccaccio,
As you have done pre-Dante?
Whom shall I hang my shimmering garment on;
. . .
Whom set to dazzle the serious future ages?
[P, 231-32]
Pound answers to himself: "Not Arnaut, not De Born, not Uc St. Circ" (P, 232), thereby echoing what Bush describes as Sordello's narrator's "coming to terms with images of his older failed poetic self" and at the same time reiterating his own efforts in Personae, where Pound had cast off "complete masks of the self in each poem" (GEPC, 83). Three Cantos 2 still comments directly on Sordello's theme of successive poetic selves and eras: "Another crown, thrown to another dancer, brings you to modern times?" (P, 240). Yet already in Browning there is no clear linear succession; Eglamor's, Sordello's, and Dante's achievements simultaneously crowd the concluding reflections of Sordello. The dynamic of Browning's "semi-epic" literary quest integrates the circularity and polyphonic contemporaneity of sacred history in a framework of perpetual dramatic conflict. As he announces in Three Cantos 1, Pound will have to consider the "trick" of Browning's "showman's booth." He prepares to take his efforts out into some forum and establish his own kind of polyphony. 23 Three Cantos's ultimate background, materials that Pound introduces in Three Cantos 3 and will eventually rework in Canto 1 to replace Three Cantos 1, is Andreas Divus's Latin translation of Book 11 of The Odyssey. There, Odysseus conjures up the spirits of the past from Hades and makes them speak through the ghost of Tiresias by feeding him blood. Browning gives a dramatized version of the same epic topos at the beginning of his poem, thus prering one of the central motifs of The Cantos. Just as Browning's motley alter ego summons a community of poets from the past, indicating that the poem draws heavily on literary traditions and in turn is directed toward an audience of co-creators, so the blind seer Tiresias offers for interpretation a panhistorical glimpse to Odysseus, the future creator of civic order.
The relationships among poet, epic, and world are negotiated in a striking section at the symmetrical axis of Sordelloto which Pound paid particular attention. Browning-in-the-process-of-composition takes over the narrative voice and more or less retains it for the almost five hundred lines, concluding Book 3. Browning separates himself from his poem as if it were a living world, yet one animated only while he dreams it: "They sleep, and I awake / . . . being at Venice" (S, 3, 614-15). As if still in transition between such dreaming and waking, Browning's voice meditates on the relations between those two realities, the poet's and his work's. Commenting on his own poetic aspirations as much as Sordello's, Browning portrays the creative process as an epic sea voyage, and concludes that, as the work travels on alone in history, only the audience can redeem the poet's transcendental force that his work contains: "no other may . . . be informed what fate / Intends, if triumph or decline await / The tempter of the everlasting steppe" (S, 3, 673-75).
Browning, who interrupted the composition of Sordello in England in order to authenticate his work during his first travels in Italy, now feels he must "awake fully," so to speak, to his immediate present and surroundings:
I muse this on a ruined palace-step
At Venice: why should I break off, nor sit
Longer upon my step, exhaust the fit
England gave birth to? Who's adorable
Enough reclaim a--no Sordello's Will
Alack!--be queen to me?
[S, 3, 676-81] 24
The poet interprets his present reality in the light of his work in progress. He seeks a "queen" just as Sordello had "demand[ed] a Palma" earlier:
The common sort, the crowd,
Exist, perceive; with Being are endowed,
However slight, distinct from what they See,
However bounded; Happiness must be,
To feed the first by gleanings from the last,
Attain its qualities, and slow or fast
Become what they behold; such peace in strife,
By transmutation, is the Use of Life,
An Alien turning Native to the soul
Or body--which instructs me; I am whole
There and demand a Palma.
[S, 3, 159-69]
Palma (based on the historical Sordello's Cunizza and an analogue to Dante's Beatrice), is an allegory of poetic glory, or "peace in strife." She guides Sordello's poetic ascent toward the secret of experience: moral awareness of an "out-soul," that is, Being as it suffuses the yet alien "out-world" (S, 3, 319; S, 1, 757). Love for her transmutes both self and other in a poetic fulfillment of Being and Knowledge: "the Use of Life, / An Alien turning Native to the soul / Or body." Inspired by Palma, briefly before Browning's voice intervenes, Sordello resolves to be "Gate-vein of this heart's blood of Lombardy" (what Dante sees in Sordello in the Purgatory), an embodiment of both poetic and political fraternity, an "aggregate / Of souls and bodies" (S, 3, 556-60). He is now intent on battling the "ignominious exile of mankind," even at the risk of his own ignominious exile for his convictions (S, 3, 580).
As he overlooks a Venetian piazza, Browning's search for an equivalent incarnation of ideal femininity ironically settles on a pauper--"You sad disheveled ghost / That pluck at me and point"--a girl who touches him as she is begging for alms (S, 3, 664- 65). Like his protagonist, Browning is compelled to open himself to the out-world of "the common sort, the crowd," as he recognizes in the girl's countenance the faces of the unfortunate multitude. Yet there is no revelatory transformation, not even such a doomed one as Sordello's. In the poet's immediate present the problems that the poem-in-progress presents are only intensified; the relationships among poetic vision, poetic work, and socio-political reality are even further complicated.
[S, 3, 723-27].
Characteristically, as Book 3 concludes, the present voice of the poet becomes submerged again more and more among the voices of Sordello's realm, and finally completely among evocations of Greek mythology and the New Testament. According to Browning, meaning and moral instruction can no longer be drawn from visionary contemplation, but only from the maze of assembled poetic history.
In Three Cantos 1, where Pound wonders whether it is "worth the [author's] evasion" not to show himself in his poetry, fifty lines are heavily laden with references to the sequence concluding Book 3 of Sordello, where it appears that Browning does show himself. Pound writes: "I walk Verona (I am here in England)"--as Browning probably already was again was when he wrote his description of Venice--"I can see Can Grande (Can see whom you will)":
I walk in the airy street,
See the small cobbles flare with poppy spoil.
'Tis your "great day," the Corpus Domini,
And all my chosen and peninsular village
Has made one glorious blaze of all its lanes--
Oh, before I was up--with poppy flowers.
[P, 230]
Pound may have taken the image of the poppy from Sordello (S, 1, 705-16), where it presents itself to the romantic mind as a natural symbol of imaginative exuberance. If, on Corpus Domini (cf. S, 1, 766), the world offers itself as a spectacle, ritualistically spilling its theatrical vitality, Pound has missed the right moment to watch, and what remains for him is the poppy spoil, scattered testimony of such an expression of life. He yet lacks a focus, he flippantly complains, probably to Browning: "(Can see whom you will)." Pound then attempts to recreate such a contemplative moment like Browning's, in which Pound's immediate surroundings would merge with the world and work of a literary precursor. He tries Catullus, "the civilized poet who still understood the psychological reality of myths," and Arnaut Daniel (GEPC, 115). After a number of ostensibly forced invocations, Pound distances himself from his effort, which he apparently thinks falls short of authenticity. He sets out to recollect "a younger self" (GEPC, 115)--the Pound of 1908 during his first travels in Italy--and naturalistically elaborates on Browning's own subversion of the romantic crafting of revelatory moments:
Your "palace step"?
My stone seat was the Dogana's curb,
And there were not "those girls," there was one flare, one face.
'Twas all I ever saw, but it was real. . . .
And I can no more say what shape it was. . . .
But she was young, too young.
True, it was Venice,
And at Florian's and under the north arcade
I have seen other faces, and had my rolls for breakfast, for that matter;
So for what it's worth, I have the background.
[P, 231]
Pound intensifies Browning's moment of isolation here; the narrator is sitting like a beggar on the curb, not on a step reminiscent of past splendors. Pound's remembrance of visits past, moreover, is blurred by distractions, such as thoughts of food ("I had my rolls for breakfast") and sex ("she was young, too young"). He thus extends on Browning's own parodic vision of the "race" as his "mistress," which alludes to the Beatrice of the Vita Nuova, the half-eroticized, half-spiritualized little girl whom a young Dante watched walking in the street.
Browning's "ruined palace step," the locus of his emergence from his poem, is also carried further, even takes on a new life, in Pound's composition. This monument of past regal ascents which Browning conspicuously rhymes with "the everlasting steppe" of poetic aspiration is a metaphor for marred hopes of earthly transcendence (see S, 3, 675-76). In Pound this image is first explicitly replaced with the horizontal "Dogana's curb," but then finds its way back into the text a few lines later in the form of the steps leading up into a Japanese temple, and thus into a whole new realm of motifs suggesting the interpenetration of spiritual, natural, and artistic realities.
. . . and gray gradual steps
Lead up beneath flat sprays of heavy cedars,
Temple of teak wood, and the gilt-brown arches
Triple in tier, banners woven by wall,
Fine screens depicted, sea waves curled high,
Small boats with gods upon them,
Bright flame above the river!
[P, 233]
In the opening of the eventual Canto 3, finally, Pound recalls sitting on the "Dogana's step," as if ready to climb the flights of the merchants' city's history, those beginnings of modern economic government that will be thematized in much of The Cantos, and of which the Dogana is a monument. 25 Canto 3 already contains elements of Pound's later attacks on what he summarily called "usura": he sits on the step because "gondolas cost too much that year," and in the following lines evokes contrasting images of palatial splendors, individual impoverishment, and institutionalized greed (C, 11). Pound's gradual translation of Browning's image thus illustrates thematic continuities between Sordelloand The Cantos. They are both concerned with poetic power's losing battle with political power and the socio-economic deprivation politics effects. Browning's contemplations on the social, political, and moral role of the poet at the end of Book 3 look forward to the events of Book 4 (leading, as echoes from Dante suggest, to the innermost circles of hell), where Sordello faces devastated Ferrara, its vexed population, and the Machiavellian Taurello Salinguerra. As it had in Book 2, the vicious circle of leaving isolation only to find himself more isolated closes once more for Sordello when he emerges from his meeting with Salinguerra, already crushed in spirit, only to find that the ravished populace celebrating him is barely able to tell him from Eglamor, and asks for nothing but light entertainment. 26 It appears that there cannot be poetic truth in what does not touch the lives of the downtrodden, at the same time that the lives of the downtrodden are generally closed to poetic truth.
As it retraces the events of Book 4, Sordello's Book 5 climactically dramatizes Sordello's battle with the politics of his time. Now it is for most part Sordello who speaks directly, with his awareness having gradually grown to a dimension comparable to the author's. His reflections on his own past and the ephemeral nature of his aspirations torture and rupture his intent with hesitations. His very concern for self-expression, his Apollonian strife, he finds, is feeble compared to Salinguerra's Bacchanalian power politics. In a splendid moment, his monologue before Salinguerra in Palma's presence, he climactically abdicates direct political responsibility and formulates a matured, vitalist poetic whose first premise is the endeavor to overcome the original limitations of self.
Let essence, whatsoe'er it be, extend--
Never contract. Already you include
The multitude; then let the multitude
Include yourself; and the result were new:
Themselves before, the multitude turn you.

Thought is the soul of act, and, stage by stage,
Soul is from body still to disengage
As tending to a freedom which rejects
Such help and incorporeally affects
The world, producing deeds but not by deeds,
Swaying, in others, frames itself exceeds,
Assigning them the simpler tasks it used
To patiently perform till Song produced
Acts, by thoughts only, for the mind.
[S, 5, 537-45; S, 5, 567-75]
Browning describes his own poetics here. The salvational force is located in literary tradition, the "deeds" of poetic thought, the survival and progressive evolution of consciousness in art. Leaving it to posterity "to unveil the last of mysteries," Sordello promises that he will dramatize all of human experience he could possibly embrace, and that he will disengage himself from his own creation, so that:
Man's inmost life shall have yet freer play:
Once more I cast external things away,
And natures composite, so decompose
That" . . . Why, he writes Sordello!
[S, 5, 616; S, 5, 601-20]
That Sordello should be the author of Browning's poem follows the logic of the poetic just expressed--"Themselves before, the multitude turn you" (S, 5, 536). As Sordello gives voice to the philosophy that guides the writing of Sordello, he has taken the role of the creator--yet this philosophy simultaneously leads to the abdication of any integrated authorial presence. Thus, this climactic moment foreshadows the end of the poem. Sordello's insights include the expectation--as it turns out, an attitude of mind larger than he himself can bear--that his own efforts are limited, that even his undone, transmuted self awaits further undoing before it can be constructive. In the middle of his thus "decompos[ing]" himself, Palma surprises him with the news, conferred upon her at Adelaide's deathbed, that he in fact is Taurello's son. As his rightful heir, Sordello is presented with the badge of Ghibelline leadership, which, after Ecelin's retirement to a cloister, none of his descendants seems fit to wear. The situation leaves Sordello in complete disarray. Book 6 depicts the warfare of his multitudinous, conflicting attitudes of mind, which finally turn in on his vital powers. He is found dead with the badge at his feet, leaving leadership to Alberic the tyrant, and thus Italy to further devastation. Sordello's forerunner Eglamor's ghost haunts the conclusion of Sordello as a vision both of the protagonist's own failure, the failure to live up to himself, to match his thought in deed, and of the religious hope that there might be spiritual progress after all, "spiral on spiral, gyres of life and light" (S, 6, 804). Yet, the poem suggests, such progress certainly is not linear and not easily measured in terms of individual human history; "Sordello's chance was gone" for posterity (S, 6, 835).
When Pound writes in Three Cantos 1 that Browning "Watched the 'soul,' Sordello's soul, / And saw it lap up life, and swell and burst-- / 'Into the empyrean?,'" he comments not only on the dialectic dynamic of hope and doubt, strife for transcendence and anticipation of annihilation, that Browning's poem emplots to its last moment. Browning's version of Sordello's life, the swelling and bursting of Sordello's soul, is an existentialist account of the poet's designs to embody the world in his poetry. The fact of death that explodes the meaning of individual intent becomes a metaphor for the dispersion of the textualized authorial self--Eglamor's, Sordello's, Browning's-- among all the texts that crowd human history.
What remains of Sordellois the text itself and its intrinsic invitation to engage with it, even to rewrite it. It problematizes the art of poetry, the limits of the poet's capabilities and authority, in ways that ultimately both vindicate and prick poetic aspirations. Browning declares:
And therefore have I moulded, made anew
A Man, and give him to be turned and tried,
Be angry with or pleased at.
Try them upon Sordello when full-grown,
And then--ah then!
[S, 3, 934-39]
This is the direct challenge that Pound sets out to answer in Three Cantos--thus perhaps his decision to open with an exordium that immediately addresses Browning in imitation of Sordellois discursive, "meditative" mode: "Hang it all, there can be but one Sordello! . . ." Pound envies Browning the coherence of his mask in spite of all its "hodge-podge." As Pound parenthetically remarks in Three Cantos 1, he has learned of Confucius that "he started with himself, built out perfection" (P, 233). (Later, in Canto 13, he quotes Confucius more directly: "If a man have not order within him / He cannot spread order about him.") 27 Pound questions whether he could ever pursue a straight line of intent, a "business" such as Browning's, because he cannot embrace a unifying system of faith:
You had one whole man?
And I have many fragments, less worth? Less worth?
Ah, had you quite my age, quite such a beastly and cantankerous age?
You had some basis, had some set belief.
Am I let preach?
[P, 230]
At the beginning of the First World War, the individual operates within a world in which the breakdown of coherence and fragmentation of self that Sordello already anticipates appear to be complete. What Pound's epic will have to accomplish, and the remainder of Three Cantossets out to prepare for, is a way for Pound to find his own virtù, and to set in motion and put down in verse what the educator, campaigner, critic, and poet who, with Browning, walks among ghosts "patched with histories" has to offer to that centrifugal world.
"Much like Browning," Carol T. Christ writes, "Pound would like to assume that a center materializes from its circumference. If that center does not materialize, identity consists in a collection of historical debris, a flotsam without a cohering principle." 28 It is this danger that, analogously to Browning's use of Dante's Sordello, Pound's earlier poem "Near Perigord" dramatized with Dante's stirrer-up-of-strife and fragmenter Bertrans de Born as its central re. Pound recognizes that in order to rewrite Sordello, he first of all needs to construct an answer to Browning's question: "Have ye times, places, actors of your own?" because in Browning those times, actors, and places function as part and parcel, material and structural devices, of his enterprise. Browning reiterates and brings to life structural aspects of an original past that highlight contemporary concerns of social and cultural transition and renewal (S, 3, 937). Browning's post-Romantic experimentation with the epic form involved choosing as a hero an eminent cultural and political re from the transition between the Middle Ages and the Renaissance. Browning then turns this re's career into that of a poet-antihero. He creates a narrative that presents the individual poet's struggle within the twilight of its time, with the light of the past (antiquity) shining beyond the present darkness (of medieval turmoil):
Fool, who spied the mark
Of leprosy upon him, violet-dark
Already as he loiters? Born just now,
With the new century, beside the glow
And efflorescence out of barbarism;
Witness a Greek or two from the abysm
That stray through Florence-town with studious air,
Calming the chisel of that Pisan pair:
If Nicolo should carve a Christus yet!
[S, 1, 567-75]
How intrigued Pound himself was by the times, places, and res that Browning had chosen for his material, by the mere facts of late-medieval Italy's cultural landscape, is evident from many of his poems and discursive works. In the chapter "Europe and the Setting" in his 1938 Guide to Kulchur, for instance, a discussion of Dante's admiration for Sordello and the moral strength of the real-life Cunizza (whom Dante as a child probably met at Guido Calvacanti's house) serves to usher in instructions on how to appreciate the European scene as transhistorical, precursors' "virtue" being "carrie[d] over" by future generations. 29 In Three Cantos 1, Pound acknowledges that it is difficult to find another single historical background that should be as effective as Browning's.
How shall we start hence, how begin the progress?
Pace naif Ficinus, say when Hotep-Hotep
Was a king in Egypt--
When Atlas sat down with his astrolabe,
He, brother to Prometheus, physicist--
Say it was Moses' birth-year?
Exult with Shang in squatness? The sea-monster
Bulges the squarish bronzes.
(Confucius later taught the world good manners,
Started with himself, built out perfection.)
With Egypt!
Daub out in blue of scarabs, and with that greeny turquoise?
Or with China, O Virgilio mio, and gray gradual steps
Lead up beneath flat sprays of heavy cedars,
Temple of teak wood, and the gilt-brown arches
Triple in tier, banners woven by wall,
Fine screens depicted, sea waves curled high,
Small boats with gods upon them,
Bright flame above the river!
[P, 233]
Pound is afraid of being a "naif Ficinus," the fifteenth-century Italian translator of Plato who drew on mythology the wrong way by "creating a systematic allegory of already allegorized and unfeared gods" (GEPC, 136). Recourse to history must not be stale and deadening, but vitalizing, an example for the avant-garde. As Pound suggests in both Three Cantos 1 and 2, the Renaissance as a stale "décor" (P, 234) will not do, and his quest for backgrounds leads him back to more vital origins. Pound here samples various original historical backgrounds potentially available to him: Egypt and its primitive power of art, Western and Biblical mythology (the potential ineffectiveness of whose montage Ficinus had given an example of) as they prere modern science, and ancient Asian cultures, the contemplative dynamic of Chinese philosophy from the sixteenth century B. C. onward, and the seductiveness of Japanese aesthetics and religion, penetrating everyday life with "emblems of divine perception" (GEPC, 138). 30 The Three Cantos proceed to find ways to overlay all these diverse backgrounds "ply over ply"--a term describing both poetic technique and a certain perception of reality that Pound cites from Sordello (S, 5, 163) in Three Cantos 2 (P, 236), and found poignant enough to insert again in the eventual Canto 4 and Canto 17 (C, 15, 78).
Pound's layering of historical and literary texts and rhyming of subjects and images, to borrow from Hugh Kenner's notion of Pound's "subject-rhymes," is a method that, in nuce, Sordello foreshadows both in its narrative technique and techniques of allusion. 31 The path that Browning's image of the "ruined palace step" takes within the genesis of The Cantos is a good example of how Pound was inspired by Browning's clustering, juxtaposition, and rhyming of images and themes. Browning opens his poem to such poetic experimentation by more often than not disrupting the linearity of the narrative process and the unity of place and time for the sake of capturing the workings of consciousness, its flux through jarring states of mind. Browning presents, for instance, most of Sordello's life in an extended flashback that, in Book 1, allows him immediately to juxtapose the scenarios of Verona (and Ferrara, superimposed) and Goito, and the contrasting states of mind dramatized by them. For similar purposes he reworks structures of epic and sacred narrative, such as employed by Homer and Dante, and of medieval romance, particularly the structures of departure and return. Sordello takes off from Goito twice, pushes toward immersion in the "out-world" twice, and both his journeys bring him full circle, with all scenarios of the past ultimately being mentally present in Sordello 6. In a similar vein, Sordello 5 reiterates the events of Sordello 4, replacing temporal progress with a heightening of narrative awareness. In such ways Browning's narrative strategies, which at times even foreshadow twentieth-century film techniques, may have prepared Pound for negotiating those of Joyce. 32
It seems safe to agree with Gibson that, while Pound's materials varied and sources of influence were numerous, principles of thought and composition that crystallize in his dialogue with Sordello remained vivid beyond Three Cantos. The allusions to Browning retained in the final version of The Cantos, even if more condensed and covert than in Three Cantos 1, are crucial, and the technique Pound develops through his revisions structurally owes more than is acknowledged to Browning's Sordello. The version of Three Cantos's opening apostrophe that survives as the beginning of Canto 2 suggests that what Pound cut was an initial analysis and discussion no longer necessary after he had found his own way of doing a Sordello:
Hang it all, Robert Browning,
there can be but the one "Sordello."
But Sordello, and my Sordello?
Lo Sordels si fo di Mantovana.
[C, 6]
The last line, taken from the first line of one of Sordello's Vitae ("Sordello was from Mantua"), poses an answer to the preceding question. Browning found his way to Sordello through reading Dante, and subsequently extended his research on twelfth- and thirteenth-century culture and history to construct a new character. After penetrating Sordello, Pound also will move further back, to origins, primary texts, and documents, and assemble them with new authenticity, in his own idiom. 33
"Und überhaupt ich stamm aus Browning. Pourquoi nier son père," writes Pound to René Taupin from Vienna in May 1928, expounding his literary affiliations and ambitions. 34 This statement openly rejects anxiety of influence, belying, in German, the great Viennese school of Oedipal psychology with an untormented frankness very much in character for a poet whose critical writings point out writers held worthy to influence others, and whose own poetry explicitly relies on methods of imitation, intertextual commentary, pastiche, and translation, both in the literal and the widest senses. A close look at the German, however, reveals that Pound refers to his "father" not so much as a precursor self but as a place of origin; instead of "Ich stamme von Browning ab"--I am a descendant of Browning--he writes, "Ich stamme aus Browning"--I am from Browning, "ing" being a common ending of Germanic place names. This is surely not a slip on Pound's part. Anxiety of influence, one might argue, is "displaced" here in a peculiar sense of the word, as Browning becomes part of a geography--perhaps at the same time the ahistorical geography of extant texts and the nostalgic, historical geography of origin, departure, and return--rather than of a genealogy. Pound's poetic self, in turn, is thus constructed as geographical or textual, as divested of a fleshly or affective personality. Like Browning who emerges from and returns to the "lagune" of his poem, Pound, in re-working Browning's work, depicts himself as a disembodied consciousness arising from and shaping a literary landscape (S, 3, 607-15). 35
And so, toward the end of his life in Italy yet again, Pound types on a single sheet of paper:
Hang it all, there can be but one Sordello!
But say I want to, say I take your whole bag of tricks,
Let in your quirks and tweeks, and say the thing's an art-form,
Your Sordello, and that the modern world
Needs such a rag-bag to stuff all its thought in;
Say I dump my silvery catch, shiny and silvery
As fresh sardines slapping and slipping on the marginal cobbles?
(I stand before the booth, the speech; but the truth
Is inside this discourse--this booth is full of the marrow of wisdomEzra Pound
Venice, 20 October, 1966. 36
Michaela Giesenkirchen is a doctoral candidate in the English Department at Washington University in St. Louis. She is presently completing a dissertation on Gertrude Stein, on whom she has also published. Research for the present article was conducted during her years as a Fellow of the German National Merit Foundation.
1. I would like to thank Christine Froula, Jeff Hamilton, Naomi Lebowitz, Jed Mayer, and John Morris for their help in reading drafts of this essay. The title phrase is George Bornstein's. "Pound's Parleyings with Robert Browning," in Ezra Pound Among the Poets, ed. George Bornstein (Chicago: University of Chicago Press, 1985), 107-27.
2. "If you'll read Yeats and Browning and Francis Thomson and Swinburne and Rossetti you'll learn something about the progress of Eng. poetry in the last century" (Pound to William Carlos Williams, 21 May 1909, The Selected Letters of Ezra Pound: 1907-1941, ed. D. D. Paige (London: Faber and Faber, 1950),8. "I still think Byron amusing, but Browning and Fitzgerald are about the only later English poets that one can keep on reading," Pound to Alice Corbin Henderson, [15 June 1916], The Letters of Ezra Pound and Alice Corbin Henderson, ed.Ira B. Nadel (Austin: University of Texas Press, 1983), 151.
3. Ezra Pound, Personae: The Shorter Poems, ed. Lea Baechler and A. Walton Litz (New York: New Directions, 1990), 13; hereafter referred to as P.
4. Pound began reading Sordello in the Fall of 1904 and kept returning to it until, around 1915, he felt he had understood it sufficiently to see in it a starting point for his own Cantos, according to Humphrey Carpenter, A Serious Character: The Life of Ezra Pound (New York: Delta, 1988), 55). "I began to get it on about the 6th reading," Pound writes to his father in 1915; quoted in Ronald Bush, The Genesis of Ezra Pound's 'Cantos' (Princeton, NJ: Princeton University Press, 1976), 75; hereafter referred to as GEPC.
5. P, 229. Unless otherwise indicated, all quotations from Three Cantos are taken from P, 229-45. Citations are to the page numbers in this edition.
6. As in "Mesmerism," Pound's parody of Browning entails elements of self-parody. In these lines, Pound uses details from Troubadour history related to Browning's in Sordello, namely details from Bertrans de Born's life and work. At the time, Pound himself drew heavily on this background, most recently in "Near Perigord" (see below).
7. All quotations from Sordello are taken from Robert Browning, The Poems, ed. John Pettigrew, vol. 1 (New York: Penguin, 1981), hereafter referred to as S. In the parenthetical references following citations, the first numbers indicate book numbers and second numbers indicate line numbers. See S, 3, 873-81, for Browning's use of the word "Zanze." Pound's rhyme of "Zanze" and "swanzig," a comic spelling of German "zwanzig" (twenty), quibbles on the peculiar sound of "Zanze," possibly Browning's rendering of "Zante," either the name of a Greek island or of a flower (as in Edgar Allan Poe's "Sonnet to Zante" of 1837).
8. To compare Browing's and Pound's representation of the relationship between Sordello and Dante, see S, 1, 348 and Ezra Pound, "Il miglior fabbro," Chap. 2 in The Spirit of Romance (New York: New Directions, 1968), 22-38. Writing of the "trick" of the "unfinished address," Pound may have had in mind a number of Daniel's shorter poems (translations of which Pound first published in 1911 and 1912) that, like Sordello, open with a few lines in which the poet addresses his audience on the topic of his art. See Ezra Pound, Ezra Pound: Translations [New York: New Directions, 1970], 416-18, 420-25. Many of Pound's own short poems between 1913 and 1915 experiment with this device. The addresses could be considered "unfinished," because they are not developed throughout the poem toward a closure.
9. An earlier version of these lines reads: "Say I draw up my consciousness and dump the lot, / Drag the past with my net and spill the catch out / All shiny and silvery, like Sardines at Sirmione." Quoted in Mary Ellis Gibson, Epic Reinvented: Ezra Pound and the Victorians (Ithaca, N. Y.: Cornell University Press, 1995), 88.
10. Three Cantos was published in Poetry in the summer of 1917, republished in the following fall in a slightly revised version in Lustra, and then again in excerpts in The Future the following spring (GEPC, xiii). By the time Pound published the first sixteen cantos in their final sequence and form in 1925, almost all original references to Browning had been scrapped.
11. Such interpretations are often in the spirit of Yvor Winters' much-quoted words: "[T]he first Cantos as they originally appeared in Poetry: A Magazine of Verse, were awkward Browningesque affairs which bear little resemblance to the later Cantos or their own later forms." Ezra Pound: A Critical Anthology, ed. J. P. Sullivan (Baltimore: Penguin, 1970), 197.
12. See also Thomas F. Grieve, Ezra Pound's Early Poetry and Poetics (Columbia: University of Columbia Press, 1997), 29-32.
13. Hugh Witemeyer, The Poetry of Ezra Pound: Forms and Renewal, 1908-1920 (Berkeley: University of California Press, 1969).
14. Witemeyer, Poetry of Ezra Pound, 45, 84.
15. Christine Froula, "Browning's Sordello and the Parables of Modernist Poetics," in Critical Essays on Robert Browning, ed. Mary Ellis Gibson, Critical Essays on British Literature (New York: G. K. Hall, 1992), 161-85.
16. Browning, The Poems, 1:150.
17. In contrast to my argument, see Thomas F. Grieve, Ezra Pound's Early Poetry and Poetics, 176, who urges that this passage expresses Pound's view that "the objective enterprise for poetry that [Browning] had adumbrated in his essay on Shelley had only been half-fulfilled in the pseudo-historical Sordello."
18. See, for instance, Michael G. Yetman, "Exorcising Shelley out of Browning: Sordello and the Problem of Poetic Identity," Victorian Poetry 13.2 : 79-98.
19. In The ABC of Reading, Pound reprints as an "Exhibit" extensive passages from this section of Sordello (S, 1, 374-84; S, 1, 392-439). They are printed, in a fashion similar to Pound's own typescript style, with large spaces between individual words so as to give them proper weight and to force the reader to see the balance between the flow of the meter and the flow of the narrative. See Pound, The ABC of Reading (New York: New Directions, 1960), 188-91.
20. "One of the finest masks ever presented": Ezra Pound, Gaudier-Brzeska: A Memoir (New York: New Directions, 1960), 86.
21. Gibson, Epic Reinvented: Ezra Pound and the Victorians, 38.
22. Literary Essays of Ezra Pound, ed. T. S. Eliot (London: Faber and Faber, 1954, reprint 1985), 287, 6.
23. The alternative, he writes, is to "sulk and leave the world to novelists"--the novel, as practiced by Joyce, claiming an all-inclusiveness that poetry shall seek to rival. See Forrest Read, ed., Pound/Joyce: The Letters of Ezra Pound to James Joyce, with Pound's Essays on Joyce (New York: J. Laughlin, n.d.), 48-49.
24. For Browning's composition of Sordello see William Clyde De Vane, A Browning Handbook (New York: Appleton-Century-Crofts, 1955), 71-87.
25. All quotations from The Cantos are taken from The Cantos of Ezra Pound (New York: New Directions, 1995). Citations are to page numbers in this edition.
26. This vicious circle closes for the first time in Book 2, when Sordello's first attempt at achieving a new aesthetic is marred by its intrinsic difficulty. The fruit of Sordello's effort at Mantua betrays his labor, "Because perceptions whole, like that he sought / To clothe, rejects so pure a work of thought / As language," making his poetry so difficult to comprehend that its deeper meanings completely escape his audience (S, 2, 659; S, 2, 589--91). "Sundered in twain," the aspiring poet-self split from the "Man," Sordello retires to Goito, where "the stain / Of the world forsakes Sordello, with its pain / Its pleasure," and in the very effort to heal himself--"Quiet those throbbing temples, then subdue / That cheek's distortion"--he falls into depression and passivity (S, 3, 15-17; S, 3, 5-8).
27. Bush, GEPC, 138, notes that Pound derived this information from a series of articles that Allan Upward ran on Confucius in The Freewoman in 1913.
28. Carol T. Christ, Victorian and Modern Poetics (Chicago: University of Chicago Press, 1985), 46.
29. Ezra Pound, Guide to Kulchur (New York: New Directions, 1970), 117.
30. Commenting on these lines, Bush (GEPC, 137) cites a passage in Pound's Gaudier-Brzeska , where Pound notes that Ficino makes Moses's birth year coincide with that of Hermes' grandfather.
31. Hugh Kenner, The Pound Era (Berkeley: University of California Press, 1971), 423.
32. Some of Sordello's lines read like directions from a screenplay: "Appears / Verona" (S, 1, 11- 12); "while within his palace these debate / . . . Glide we by clapping doors " (S, 1, 311-12); "So fare they. Now revert" (S, 1, 505); "Go back to the beginning, rather; blend / It gently with Sordello's life" (S, 1, 587-88); "Back now for Salinguerra" (S, 4, 376). See Witemeyer's discussion of Joyce's influence on Pound in The Poetry of Ezra Pound, 161-95.
33. The quoted lines, still closely connected to Browning's materials, "rhyme" with the end of Canto 6, where, after juggling references to Homer and Provençal history, Pound epitomizes Sordello's life by direct recourse to the chronicles and Sordello's poetry. By 1934, notwithstanding his own difficulty in grasping Sordello, Pound cited it as an example of "narrative limpidity" and poetic ease (Pound, The ABC of Reading, 188-91). Whereas "Victorian half-wits claimed this poem was obscure," he maintains that Browning's verse was "without clog and verbal impediment." To prove this he chooses passages that are relatively easy to follow. Evidently he is out to shatter prejudice against Browning--but perhaps also against the difficult idiom he had developed out of his engagement with Browning's.
34. Selected Letters of Ezra Pound, 218.
35. In 1915 Pound acknowledges his earlier work's debt to Browning's and adds that studying Browning's achievement is necessary to understanding Pound's own enterprise. "If you like Perigord," he tells his father, "you would probably like Browning's Sordello. . . . You'll have to read it sometime as my big long endless poem that I am now struggling with, starts off with a barrelful of allusions to Sordello which will intrigue you if you haven't read the other" (quoted in Bornstein, Ezra Pound Among the Poets, 137).
36. Unpublished typescript, Ezra Pound Papers, Beinecke Rare Book and Manuscript Library, Yale University: Box 34, Folder 800.


{% extends "base.html"%} {% load static %} {% block title %} Verilog Basics-II {% endblock %} {% block content%}
A general logic circuit can consist of logic gates ,transmission gates or switches. Verilog HDL supports these components as predefined primitives.
These gates have one scalar output and multiple scalar inputs.
| Logic Gate | Predefined Primitive |
|---|---|
| Multiple Input AND gate | and |
| Multiple Input OR gate | or |
| Multiple Input NAND gate | nand |
| Multiple Input NOR gate | nor |
| Multiple Input XOR gate | xor |
| Multiple Input XNOR gate | xnor |
wire OUT, A, B, C, D;
and G1(OUT, A, B);
or G2(OUT, A, B);
nand G3(OUT, A, B);
nor G4(OUT, A, B);
xor G5(OUT, A, B);
xnor G6(OUT, A, B);
//We can also have multiple-input gates within single declaration
// Here is a 4-input AND gate
and G7(OUT, A, B, C, D);
// G1,G2,G3,..,etc are the gate instance name
// We can even declare without it
nor (OUT, A, B, C); // Legally Correct !
These gates have one scalar input and one or more scalar outputs.These gates can have an extra enable/control signal.
| Transmission Gate | Predefined Primitive |
|---|---|
| Multiple Output Inverter | not |
| Multiple Output Buffer | buf |
| Tri-state Inverter (active low) | notif0 |
| Tri-state Inverter (active high) | notif1 |
| Tri-state Buffer (active low) | bufif0 |
| Tri-state Buffer (active high) | bufif1 |
wire OUT, OUT1, OUT2, IN, CONTROL ;
// Inverter and Buffer
not G1(OUT, IN);
buf G2(OUT, IN);
//We can also have multiple-output gates within single declaration
not G3(OUT1, OUT2, IN);
buf G4(OUT1, OUT2, OUT3, IN);
// G1,G2,G3,..,etc are the gate instance name
// We can even declare without it
buf (OUT, IN); // Legally Correct !
// Tristate Buffer
bufif0 G5(OUT, IN, CONTROL);
bufif1 G6(OUT, IN, CONTROL);
// Tristate Inverter
notif0 G7(OUT, IN, CONTROL);
notif1 G8(OUT, IN, CONTROL);
A switch is the whole basis of the logic gates and then further logic circuits.The predefined primitives here, will model the basic MOSFET switches.
wire out, data, control, ncontrol, pcontrol ;
// NMOS and PMOS
nmos n1(out, data, control);
pmos p1(out, data, control);
// Without declaration of the instance name
nmos (out, data, control);
pmos (out, data, control);
// CMOS
cmos c1(out, data, ncontrol, pcontrol);
// CMOS can also be declared using NMOS and PMOS instantiation
nmos (out, data, ncontrol);
pmos (out, data, pcontrol);
Verilog has many different operator types. There are various operator types namely Arithmetic, Relational, Logical, Equality, Reduction, Bitwise, Conditional, Shift and Concatenation.
The operators can be classified as Unary, Binary or Ternary based upon no. of operands required for operation.
Unary – Single Operand ; Binary – Two Operands ; Ternary – Three Operands
| Operator | Description | Type(based on number of operands) |
|---|---|---|
| + | Add | Binary |
| - | Subtract | Binary |
| * | Multiply | Binary |
| / | Divide | Binary |
| % | Modulus | Binary |
| ** | Exponential | Binary |
in1 = 20; in2 = 4;
in1 + in2; //Addition. Value = 24
in1 - in2; //Subtraction. Value = 16
in1 * in2; //Multiplication. Value = 80
in1 / in2; //Division. Value = 5
in1 % in2; //Modulus. Value = 0
in1 ** in2; //Exponential. Value = 160000
| Operator | Description | Type(based on number of operands) |
|---|---|---|
| > | Greater Than | Binary |
| < | Less Than | Binary |
| >= | Greater than or Equal | Binary |
| <= | Less than or Equal | Binary |
in1 = 20 ; in2 = 4; in3 = 4;
in1 > in2; //Evaluates to Logical ‘1’
in1 < in2; // Evaluates to Logical ‘0’
in2 >= in3; // Evaluates to Logical ‘1’
in1 <= in3; // Evaluates to Logical ‘0’
| Operator | Description | Type(based on number of operands) |
|---|---|---|
| ! | Logical Negation | Unary |
| && | Logical AND | Binary |
| || | Logical OR | Binary |
in1 = 5 ; in2 = 0;
in1 && in2; //Evaluates to ‘0’ => (Logical-1 && Logical-0)
in1 || in2; // Evaluates to ‘1’ => (Logical-1 || Logical-0)
!in1; // Evaluates to ‘0’ => NOT(Logical-1)
!in2; // Evaluates to ‘1’ => NOT(Logical-0)
| Operator | Description | Type(based on number of operands) |
|---|---|---|
| == | Equality | Binary |
| != | Inequality | Binary |
| === | Greater than or Equal | Binary |
| !== | Less than or Equal | Binary |
in1 = 4’b0010 ; in2 = 4’b1001 ; in3 = 4’b0010;
in4 = 4’b00x1 ; in5 = 4’b01xx ; in6 = 4’b00x1;
in1 == in3; //Evaluates to Logical ‘1’
in1 != in2; // Evaluates to Logical ‘1’
in4 == in6; //Evaluates to ‘x’
in4 === in6; // Evaluates to Logical ‘1’ , matches all bits, including x
in4 !== in5; // Evaluates to Logical ‘1’
| Operator | Description | Type(based on number of operands) |
|---|---|---|
| & | Reduction AND | Unary |
| ~& | Reduction NAND | Unary |
| | | Reduction OR | Unary |
| ~| | Reduction NOR | Unary |
| ^ | Reduction XOR | Unary |
| ~^ | Reduction XNOR | Unary |
in = 4’b0101;
&in ; //Evaluates as 0 & 1 & 0 & 1 = 1’b0
~&in ; // Evaluates as ~(0 & 1 & 0 & 1) = 1’b1
|in; //Evaluates as 0 | 1 | 0 | 1 = 1’b1
~|in; // Evaluates as ~(0 | 1 | 0 | 1) = 1’b0
^in; //Evaluates as 0 ^ 1 ^ 0 ^ 1 = 1’b0
~^in; // Evaluates as ~(0 ^ 1 ^ 0 ^ 1) = 1’b1
| Operator | Description | Type(based on number of operands) |
|---|---|---|
| ~ | Bitwise NOT | Unary |
| & | Bitwise AND | Binary |
| | | Bitwise OR | Binary |
| ^ | Bitwise XOR | Binary |
in1 = 4’b0101; in2 = 4’b1011;
~in1; //Evaluates to 4’b1010 => { (!0) , (!1) , (!0) , (!1)}
in1 & in2; // Evaluates to 4’b0001 => {(0 && 1), (1 && 0), (0 && 1), (1 && 1)}
in1 | in2; // Evaluates to 4’b1111 => {(0 || 1), (1 || 0), (0 || 1), (1 || 1)}
in1 ^ in2; // Evaluates to 4’b1110 => {(0 ^ 1), (1 ^ 0), (0 ^ 1), (1 ^ 1)}
| Operator | Description | Type(based on number of operands) |
|---|---|---|
| >> | Right Shift | Binary |
| << | Left Shift | Binary |
| >>> | Arithmetic Right Shift | Binary |
| <<< | Arithmetic Left Shift | Binary |
in1 = 4’b0101 ;
b = -10 ; // binary(10) = 01010 ; binary(-10) = ~binary(10)+1 [2’s Complement]
// binary(-10) = 10110
out = in1>>1; // out = 4’b0010
out = in1<<2; // out = 4’b0100
out = in1<<1; // out = 4’b1010
out = (b>>>2); //(out = -3) -> (10110)>>>2 = 11101 -> out = ~(11101)+ 1 = 00011(- 3)
| Operator | Description | Type(based on number of operands) |
|---|---|---|
| { } | Concatenation | No Limit |
| { { } } | Replication | No Limit |
in1 = 1’b1 ; in2 = 2’b00 ; in3 = 1’b1;
y = {in1, in2, in3} ; // y=4’b1001
y = {4{in1}, 2{in2}} ; // y=8’b11110000
Symbol -> ? : Syntax -> y = a ? b : c ; (Ternary Operator)
The above statement means that if a==1 , then y = b ; else y = c;
The basic lexical conventions in Verilog HDL are similar to C programming language. There is a stream of tokens which can be numbers, strings, identifiers, comments, delimiters and keywords.
All keywords are in lowercase, that becomes essential as Verilog HDL is a case-sensitive language.
This comprises of Tab (\t) , Newline (\n) , Blank Space (\b). It has some special meaning when used with strings. However , those are ignored elsewhere.
One of the major use of whitespace is to improve visibility of output obtained after execution of any code.
Comments help in readability and documentation of code.
One Line comment starts with ‘//’. The compiler skips any part written after this notation for that line. Multiple Line Comment starts with ‘ /* ’ and ends with ‘ */ ’.
The compiler skips any part written between these two notations.
One-Line Comments can be nested into Multi Line Comments while nesting of only Multi Line Comments is not allowed.
a = b ^ c; // One Line Comment
/* Multi
Line
Comment */
/* / Legal Comment / */
/*
/* Illegal Comment */
*/
Syntax -- (size)’(base)(number)
Here size is taken as no. of bits associated in binary form of number no matter whatever the base can be.
For e.g. Single Hexadecimal Number occupies 4 bits, Single Octal Number occupies 3 bits,etc.
Legal Base formats include Binary(‘b OR ‘B) , Octal(‘o OR ‘O ) , Decimal (‘d OR ‘D) and Hexadecimal (‘h OR ’H)
Numbers should be a subset of following (complying with availability of number in that particular base format) :
0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,A,B,C,D,E,F
4’b0010 // 4-bit Binary Number
16’hab5f // 16-bit Hexadecimal Number
10’d987 // 10-bit Decimal Number
If a number doesn’t have a size mentioned , then bit-size is simulator and machine-specific (generally 32-bit).
If a number doesn’t have a base mentioned , then by default , the number is considered to be written in Decimal format.
’b0010 // 32-bit Binary Number
’hab5f // 32-bit Hexadecimal Number
987 // 32-bit Decimal Number by Default
Also there are symbols for denoting Unknown and High Impedance Levels.
These are important while implementing real optimized circuits.
Unknown value is represented by x
High Impedance value is represented by z
4’b00xx // 4-bit Binary Number. Two LSBs Unknown
16’habxx // 16-bit Hexadecimal Number . Eight LSBs unknown
10’dz // 10-bit Decimal Number. (All High Impedance)
Negative Numbers can be specified with a negative sign before the complete representation of number.
Alternatively , a signal specifier can be added.
Any other ways of representation are not legal and may give syntax error
-3’d4 // Stored as 2’s complement
-3’sd4 // For signed mathematical calculation
3’d-4 // Illegal
We can add underscores anywhere in number except the first character.
This doesn’t have ay special meaning, but it just increases readability.
We can use ‘?’ symbol as an alternative to ‘z’ (High Impedance) for improving readability.
8’b00111001 // 8-bit Binary Number
8’b0011_1001 // Same as above
12’h38? // Equivalent to 12’h38z
A string is the set of characters enclosed in double quotes.
It has to be in single line.
It is considered as a sequence of one-byte ASCII characters
“Keep Learning with Verilog Master !” // 8-bit Binary Number
“a = b + c doesn’t have any special meaning here” // Same as above
Words which have a special meaning in Verilog are called keywords.
They are special identifiers reserved for language constructs.
All keywords are in Lowercase.
Identifiers are names given to objects so that they can be referenced in the design.
They may consists of alphanumeric characters with underscore(_) or dollar sign ($) and are case sensitive.
They can start with any of above characters without dollar sign ($). It is reserved for system tasks.
If we declare any identifier starting with a “\” , all characters will be processed literally until any whitespace is found (space, tab or newline). These are called Escaped Identifiers.
Even keywords won’t be treated as with any special meaning.
reg stored_val; // reg is keyword, stored_val is identifier
wire temp; // wire is keyword, temp is identifier
\a-b+c*d // Escaped Identifier
There are certain tasks which can generate input or output during simulation. They are termed as System Tasks provided by Verilog for certain routine tasks.
All of them appear in format $(keyword).
Operations such as displaying on screen, monitoring of nets, stopping or finishing system tasks can be done.
Syntax –
$display(“string_with_format”,arguement1,arguement2,..);
$displayb(All same but default format to binary..);
It is similar for all other system directives. Only if there’s any specific format specified like “b”, “o”, “h”, “d” then the arguements will be always taken in the specified format.
What are formats??
They are special characters to print certain variable obtained as either input or output during simulation.
Generally , they have a “%” sign followed by initials corresponding certain property. That denotes the way we want our variable to be displayed.
| Format | Description |
|---|---|
| %d or %D | Display variable in Decimal |
| %b or %B | Display variable in Binary |
| %o or %O | Display variable in Octal |
| %h or %H | Display variable in Hexadecimal |
| %t or %T | Display in current time format |
| %m or %M | Display hierarchical name (No arguments) |
We have to always call the function whenever we need to put certain value on display.
$display is used to display variable values and strings on newline.
$monitor is used to monitor the value of variable
The function gets variable on display every time there is any change in variable value.There should be only one $monitor statement in the code . If there are multiple of them , the last one is considered.
$monitoron and $monitoroff can be used to control the monitoring of variables. The literal meaning represents what happens when any of them is used.
$stop is used to suspend the simulation and then put the simulation in interactive mode where the user can be involved in debugging activities. Here, the simulation process will be kept at stay but not stopped.
$finish is used to completely stop the simulation and handover the control to the user and relive the compiler.
$display(“Verilog Master !!”); // Prints Verilog Master in Console
$display($time); // Displays Current Simulation Time in Console
// value = 4’d12 ; store = 5’d23 ;
$display(“Store = %b , Value = %d ”,store, value);
// Prints Store = 10111 , Value = 12 in Console
$display(“Store = %d , Value = %b ”,store, value);
// Prints Store = 23 , Value = 1100 in Console
All compiler directives are defined by using the `(keyword) construct
There are a few important compiler directives :
`define is used to substitute certain variables/keywords/system directives on a macro associated.
Whenever we will encounter the macro , we have to do the function that is associated with its substitution. It is similar to #define in C programming language.
`include allows us to include all the content of Verilog source file associated in another Verilog File.
This works as similar to #include in C programming language.
`timescale is generally associated with the scaling in the simulation plot.
What should be the smallest scale division and the accuracy up to which no errors are present.
`ifdef is also used for Conditional Compilation for Optimization.
`define SIZE 27 ; // Used as `SIZE in code with value of 27
`define SN $stop ; // Word `SN will stop simulation
`include rfsystem.v ; // Include rfsystem.v file in the design file
/*….
….
(Verilog Code for Main Design )
….
….*/


The Graduate Council Travel Fund provides funding for graduate students at the University of Chicago to attend academic conferences, professional conferences, case competitions, and other events to further their graduate careers. Recommenders, please provide some information on your student to help Graduate Council determine whether their proposed application merits funding.
Note: Submission of this recommendation does not guarantee funding for the student applicant.
Questions or concerns may be addressed to the Graduate Council VP for the Travel Fund, Mary Burkey (mtburkey@uchicago.edu)


No chance of Tottenham signing Zlatan Ibrahimovic – Jose Mourinho
Jose Mourinho has said there is “no chance” of Tottenham signing Zlatan Ibrahimovic.
The 38-year-old, currently a free agent following his exit from LA Galaxy in the last few weeks, has been linked with a move to Spurs given his strong connection with Mourinho.
Mourinho has worked with Ibrahimovic at Inter Milan and Manchester United, but will not be bringing him to the Tottenham Hotspur Stadium.
The Portuguese says it does not make sense when he has Harry Kane at his disposal.
“You are right about the connection, we have more than a connection,” Mourinho said when asked whether he would be trying to sign the Swede.
“I would say also passion and understanding, an amazing player and an amazing guy, but I would say no. No chance.
“We have the best striker in England, we have one of the top two or three strikers in the world, it doesn’t make any sense for a striker of Zlatan’s dimension, obviously in his late 30s, but still a striker that can play in any club in the world.
“It doesn’t make sense to come to a club where we have Harry Kane.”
It has been a hectic first week for Mourinho at the Spurs helm following his appointment last week.
After his unveiling to the media on Thursday, he had his first game 48 hours later at West Ham – which Spurs won 3-2 – and is now preparing for a Champions League clash with Olympiacos on Tuesday.
Given the quick turnaround between Mauricio Pochettino leaving and him getting the job – it was less than 12 hours between the two club statements – Mourinho has not yet contacted Pochettino.
The pair are good friends and the Portuguese is giving his predecessor some space.
“I didn’t (speak to him) because I know what he is feeling,” Mourinho said.
“I have been there and I know that there is a period where the best thing for us sometimes is to process our feelings, to process what happened with us and then in a couple of weeks, two, three weeks then we are open to the world.
“We are open again to embrace the different period in our lives, so I want to respect that, to give that feeling to him.
“But I spoke with his son (Maurizio), who is a player in our youth categories, and I think through his boy he can understand my feelings too.
“And of course I will call him but I want to let him process.
“I also told the players in contact with him to make him feel completely free to come here any time he wants.
“I will contact him when I feel that he has had that space.
“I needed that little bit of space to process things when I left previous clubs. It does not take just five or six days to be open again.
“You take a little bit of time to process things and understand and to think and rethink.
“You speak with people and in a couple of weeks he will be fine and I will call him.”
Part of Mourinho’s remit at Spurs is to do one thing that Pochettino could not do – win silverware.
He returns to the Champions League, a competition he has won twice, against the Greek side on Tuesday, where a point will see Tottenham reach the knockout stages.
Even with Mourinho at the helm, the Premier League club will not be among the favourites to lift the trophy in June.
Still, the Portuguese is not scared of what might be waiting for them in the next round.
“I love the competition as much as everyone in football,” he said. “It’s something that everybody dreams about, to win it. Not everyone has the privilege to be a Champions League winner which I was happy enough to do twice.
“Do I want to win it a third time? Of course, I would love it but I know the difficulties of it.
“But with these boys, I will never be afraid of any Champions League match that comes into our faces.
“I repeat, we need to qualify, that is the focus. I always say that.
“We have to qualify, but, as I was saying, give me time to work, give me time to float my ideas with these boys and I will have no problem at all going to any stadium at all to face any big opponent in Europe or in England.
“We are not going to be afraid of anybody.”


BTS Lookalike
Home
Features
(current)
About us
More features are coming soon...
EXO LOOKALIKE
BlACKPINK LOOKALIKE
REDVELVET LOOKALIKE
TWICE LOOKALIKE
If you have any requests about a K-pop group that you like,
please comment below or send me a direct message through Instagram.
I will make one as soon as possbile. Thank you.
btslookalike2020
Please enable JavaScript to view the
comments powered by Disqus.


St Mirren 2 Ross County 1 as Sam Foley stunner takes Saints off the bottom - 3 talking points
Sean McLoughlin also scored as Jim Goodwin's men leapfrogged St Johnstone and Hamilton.
by Kyle GunnSt Mirren fought back from a goal down to claim a vital three points against Ross County and move off the bottom of the table.
Goals from Sean McLoughlin and late winner from Sam Foley sees Saints leapfrog St Johnstone for 24 hours at least after Brian Graham put County ahead.
Goodwin’s men came into the game on the back a 5-2 defeat against Hearts at Tynecastle, which saw them propping up the league during the international break.
Meanwhile the Staggies, who stole an injury time winner when the teams met in Dingwall earlier this season, remain in sixth coming in to this one despite a 3-1 reverse against Aberdeen last time out.
Lively beginning to proceedings in this one, the hosts forced a few early corners, that came to nothing, before Obika wasted two attempts.
But it would be the visitors, who had looked promising on the break, that would take the lead after 24 minutes when a terrific Brian Graham finish flew by Vaclav Hladky.
It could have been 2-0 minutes later had Hladky not pulled off a top drawer save deny Billy Mackay.
That miss allowed Hull loanee McLoughlin to pounce for his first goal for the club on 43 minutes and the teams went in level at the break.
It was a dominant start to the second half for Saints who had efforts Durmus and Obika who saw a powerful drive blocked.
The most blatant chance would come with 17 minutes to go but St Mirren winger Ilkay Durmus was free in the box but couldn’t connect with it after great work from Flynn.
But that didn’t matter much because Foley smashed in his first Saints goal to give Goodwin’s men all three points after 87 minutes.
3 talking points
Home sweet home as Buddies get off bottom spot
It’s the first time in five weeks that St Mirren have stepped out at the Simple Digital Arena, and it remains the only place they have picked up any points this season. Today’s victory with goals from Sean McLoughlin and Sam Foley has rounded off a good week for boss Jim Goodwin who saw his side get off bottom spot for at least 24 hours, having turned 38 on Wednesday.
Staggies frustrated as they fall to Paisley defeat
Ross County, who were still in the top six coming into the fixture, haven’t actually won in the league since they beat Motherwell 2-1 at Fir Park on September 21. And Dingwall co-gaffers Stuart Kettlewell and Steven Ferguson will be racking their brains trying to find a way to get back to winning ways as soon as possible.
First goal scorers do the business for Saints
Sean McLoughlin and Sam Foley both hit their first goals for St Mirren as they leapfrogged St Johnstone at the bottom who take on Aberdeen tomorrow. Foley’s late winner could prove vital as Jim Goodwin wants to take as many home points as possible and that’s even more important considering the Buddies are yet to take a single point on the road.


Default Title
No activities added yet!
English List
Activity
Description
Subject
Age Range
Entered by
Date Created
Cheese
Description
Subject
Subject
Subject
Subject
Edit
Add |
Remove


|
C++ Actor Framework 0.18
|
State for a single path to a sink of a downstream_manager
.
More...
#include <outbound_path.hpp>
Public Types | |
| using | regular_shutdown = downstream_msg::close |
| Propagates graceful shutdowns. | |
| using | irregular_shutdown = downstream_msg::forced_close |
| Propagates errors. | |
| using | cache_type = std::deque< std::pair< int64_t, downstream_msg::batch > > |
| Stores batches until receiving corresponding ACKs. | |
Public Member Functions | |
| outbound_path (stream_slot sender_slot, strong_actor_ptr receiver_hdl) | |
| Constructs a pending path for given slot and handle. | |
| void | emit_batch (local_actor *self, int32_t xs_size, message xs) |
Sends a downstream_msg::batch on this path. | |
| template<class Iterator > | |
| Iterator | emit_batches_impl (local_actor *self, Iterator i, Iterator e, bool force_underfull) |
| template<class T > | |
| void | emit_batches (local_actor *self, std::vector< T > &cache, bool force_underfull) |
Calls emit_batch for each chunk in the cache, whereas each chunk is of size desired_batch_size . | |
| void | emit_regular_shutdown (local_actor *self) |
Sends a downstream_msg::close on this path. | |
| void | emit_irregular_shutdown (local_actor *self, error reason) |
Sends a downstream_msg::forced_close on this path. | |
| bool | pending () const noexcept |
Returns whether this path is pending, i.e., didn't receive an ack_open yet. | |
| bool | clean () const noexcept |
| Returns whether no pending ACKs exist. | |
| void | set_desired_batch_size (int32_t value) noexcept |
Static Public Member Functions | |
| static void | emit_irregular_shutdown (local_actor *self, stream_slots slots, const strong_actor_ptr &hdl, error reason) |
Sends a downstream_msg::forced_close . | |
Public Attributes | |
| stream_slots | slots |
| Slot IDs for sender (self) and receiver (hdl). | |
| strong_actor_ptr | hdl |
| Handle to the sink. | |
| int64_t | next_batch_id |
| Next expected batch ID. | |
| int32_t | open_credit |
| Currently available credit on this path. | |
| int32_t | desired_batch_size |
| Ideal batch size. Configured by the sink. | |
| int64_t | next_ack_id |
| ID of the first unacknowledged batch. | |
| bool | closing |
| Stores whether an outbound path is marked for removal. | |
Static Public Attributes | |
| static constexpr const auto | aborter_type = stream_aborter::sink_aborter |
| Stream aborter flag to monitor a path. | |
Related Functions | |
(Note that these are not member functions.) | |
| template<class Inspector > | |
| bool | inspect (Inspector &f, outbound_path &x) |
State for a single path to a sink of a downstream_manager
.
| void caf::outbound_path::emit_batch | ( | local_actor * | self, |
| int32_t | xs_size, | ||
| message | xs | ||
| ) |
Sends a downstream_msg::batch
on this path.
Decrements open_credit
by xs_size
and increments next_batch_id
by 1.
| void caf::outbound_path::emit_batches | ( | local_actor * | self, |
| std::vector< T > & | cache, | ||
| bool | force_underfull | ||
| ) |
Calls emit_batch
for each chunk in the cache, whereas each chunk is of size desired_batch_size
.
Does nothing for pending paths.
| bool caf::outbound_path::closing |
Stores whether an outbound path is marked for removal.
The downstream_manger
no longer sends new batches to a closing path, but buffered batches are still shipped. The owning stream_manager
removes the path when receiving an upstream_msg::ack_batch
and no pending batches for this path exist.
| int64_t caf::outbound_path::next_ack_id |
ID of the first unacknowledged batch.
Note that CAF uses accumulative ACKs, i.e., receiving an ACK with a higher ID is not an error.


{% extends "layout.html" %} {% block content %}
No queries created. You may create a new query or upload a new pack.
{% endif %}


All Files (69.09% covered at 1.13 hits/line)
18 files in total.
165 relevant lines.
114 lines covered and
51 lines missed
- 1
module Helpable
- 1
extend ActiveSupport::Concern
- 1
require "bolognese"
- 1
require "maremma"
- 1
included do
- 1
include Bolognese::DoiUtils
- 1
include Bolognese::Utils
- 1
def get_handle_url(id: nil)
response = Maremma.head(id, limit: 0)
response.headers["location"]
end
# content-types registered for that DOI
- 1
def get_registered_content_types(id)
doi = doi_from_url(id)
media_url = Rails.env.production? ? "https://api.datacite.org" : "https://api.test.datacite.org"
media_url += "/media?doi-id=#{doi}"
response = Maremma.get media_url
response.body.fetch("data", []).reduce({}) do|sum, media|
content_type = media.dig("attributes", "media-type")
url = media.dig("attributes", "url")
sum[content_type] = url
sum
end.to_h
end
- 1
def available_content_types
content_types = Mime::LOOKUP.map { |k, v| [k, v.to_sym] }.to_h
content_types.except("text/html", "application/xhtml+xml", "text/plain", "application/json", "text/x-json", "application/jsonrequest")
end
end
end
# class used for helpable module testing
- 1
class Help
- 1
include Helpable
end
- 1
require_relative 'boot'
- 1
require "rails"
# Pick the frameworks you want:
- 1
require "active_model/railtie"
# require "active_job/railtie"
# require "active_record/railtie"
- 1
require "action_controller/railtie"
# require "action_mailer/railtie"
# require "action_view/railtie"
# require "action_cable/engine"
# require "sprockets/railtie"
# require "rails/test_unit/railtie"
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
- 1
Bundler.require(*Rails.groups)
# load ENV variables from .env file if it exists
- 1
env_file = File.expand_path("../../.env", __FILE__)
- 1
if File.exist?(env_file)
- 1
require 'dotenv'
- 1
Dotenv.load! env_file
end
# load ENV variables from container environment if json file exists
# see https://github.com/phusion/baseimage-docker#envvar_dumps
- 1
env_json_file = "/etc/container_environment.json"
- 1
if File.exist?(env_json_file)
env_vars = JSON.parse(File.read(env_json_file))
env_vars.each { |k, v| ENV[k] = v }
end
# default values for some ENV variables
- 1
ENV['APPLICATION'] ||= "content-negotiation"
- 1
ENV['HOSTNAME'] ||= "data.local"
- 1
ENV['MEMCACHE_SERVERS'] ||= "memcached:11211"
- 1
ENV['SITE_TITLE'] ||= "Content Resolver"
- 1
ENV['LOG_LEVEL'] ||= "info"
- 1
ENV['GITHUB_URL'] ||= "https://github.com/crosscite/content-negotiation"
- 1
ENV['CITEPROC_URL'] ||= "https://citation.crosscite.org/format"
- 1
ENV['TRUSTED_IP'] ||= "<IP_ADDRESS>/8"
- 1
module ContentNegotiation
- 1
class Application < Rails::Application
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
# Only loads a smaller set of middleware suitable for API only apps.
# Middleware like session, flash, cookies can be added back manually.
# Skip views, helpers and assets when generating a new resource.
- 1
config.api_only = true
# secret_key_base is not used by Rails API, as there are no sessions
- 1
config.secret_key_base = 'blipblapblup'
# serve assets via web server
- 1
config.public_file_server.enabled = false
# configure logging
- 1
logger = ActiveSupport::Logger.new(STDOUT)
- 1
logger.formatter = config.log_formatter
- 1
config.logger = ActiveSupport::TaggedLogging.new(logger)
- 1
config.log_level = ENV['LOG_LEVEL'].to_sym
- 1
config.lograge.enabled = true
- 1
config.lograge.ignore_actions = ['HeartbeatController#index']
# Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`.
# Previous versions had false.
- 1
config.active_support.to_time_preserves_timezone = true
# Configure SSL options to enable HSTS with subdomains. Previous versions had false.
- 1
config.ssl_options = { hsts: { subdomains: true } }
# compress responses with deflate or gzip
- 1
config.middleware.use Rack::Deflater
# Use memcached as cache store
- 1
config.cache_store = :dalli_store, nil, { :namespace => ENV['APPLICATION'] }
end
end
- 1
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
- 1
require 'bundler/setup' # Set up gems listed in the Gemfile.
# Load the Rails application.
- 1
require_relative 'application'
# Initialize the Rails application.
- 1
Rails.application.initialize!
- 1
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# The test environment is used exclusively to run your application's
# test suite. You never need to work with it otherwise. Remember that
# your test database is "scratch space" for the test suite and is wiped
# and recreated between test runs. Don't rely on the data there!
- 1
config.cache_classes = true
# Do not eager load code on boot. This avoids loading your whole application
# just for the purpose of running a single test. If you are using a tool that
# preloads Rails for running tests, you may have to set it to true.
- 1
config.eager_load = false
# Configure public file server for tests with Cache-Control for performance.
- 1
config.public_file_server.enabled = true
- 1
config.public_file_server.headers = {
'Cache-Control' => 'public, max-age=3600'
}
# Show full error reports and disable caching.
- 1
config.consider_all_requests_local = true
# Global enable/disable all memcached usage
- 1
config.perform_caching = true
# Disable/enable fragment and page caching in ActionController
- 1
config.action_controller.perform_caching = false
# Raise exceptions instead of rendering exception templates.
- 1
config.action_dispatch.show_exceptions = false
# Disable request forgery protection in test environment.
- 1
config.action_controller.allow_forgery_protection = false
# config.action_mailer.perform_caching = false
# Tell Action Mailer not to deliver emails to the real world.
# The :test delivery method accumulates sent emails in the
# ActionMailer::Base.deliveries array.
# config.action_mailer.delivery_method = :test
# Print deprecation notices to the stderr.
- 1
config.active_support.deprecation = :stderr
# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true
end
# Be sure to restart your server when you modify this file.
# ApplicationController.renderer.defaults.merge!(
# http_host: 'example.org',
# https: false
# )
# Be sure to restart your server when you modify this file.
# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
# Rails.backtrace_cleaner.remove_silencers!
- 1
if ENV["BUGSNAG_KEY"]
Bugsnag.configure do |config|
config.api_key = ENV["BUGSNAG_KEY"]
config.notify_release_stages = %w(stage production)
end
end
# Be sure to restart your server when you modify this file.
# Configure sensitive parameters which will be filtered from the log file.
- 1
Rails.application.config.filter_parameters += [:password]
# Be sure to restart your server when you modify this file.
# Add new inflection rules using the following format. Inflections
# are locale specific, and you may define rules for as many different
# locales as you wish. All of these examples are active by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep )
# end
# These inflection rules are supported but not enabled by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.acronym 'RESTful'
# end
- 1
Rails.application.configure do
- 1
config.lograge.base_controller_class = 'ActionController::API'
end
# unregister all Mime types, keep only :text
- 35
Mime::EXTENSION_LOOKUP.map { |i| i.first.to_sym }.each do |f|
- 34
Mime::Type.unregister(f)
end
# re-register some default Mime types
- 1
Mime::Type.register "text/html", :html, %w( application/xhtml+xml ), %w( xhtml )
- 1
Mime::Type.register "text/plain", :text, [], %w(txt)
- 1
Mime::Type.register "application/json", :json, %w( text/x-json application/jsonrequest )
# Mime types supported by bolognese gem https://github.com/datacite/bolognese
- 1
Mime::Type.register "application/vnd.crossref.unixref+xml", :crossref
- 1
Mime::Type.register "application/vnd.crosscite.crosscite+json", :crosscite
- 1
Mime::Type.register "application/vnd.datacite.datacite+xml", :datacite, %w( application/x-datacite+xml )
- 1
Mime::Type.register "application/vnd.datacite.datacite+json", :datacite_json
- 1
Mime::Type.register "application/vnd.schemaorg.ld+json", :schema_org
- 1
Mime::Type.register "application/rdf+xml", :rdf_xml
- 1
Mime::Type.register "text/turtle", :turtle
- 1
Mime::Type.register "application/vnd.jats+xml", :jats
- 1
Mime::Type.register "application/vnd.citationstyles.csl+json", :citeproc, %w( application/citeproc+json )
- 1
Mime::Type.register "application/vnd.codemeta.ld+json", :codemeta
- 1
Mime::Type.register "application/x-bibtex", :bibtex
- 1
Mime::Type.register "application/x-research-info-systems", :ris
- 1
Mime::Type.register "text/x-bibliography", :citation
# register renderers for these Mime types
# :citation is handled differently
- 1
%w(crosscite datacite_json schema_org turtle citeproc codemeta).each do |f|
- 6
ActionController::Renderers.add f.to_sym do |obj, options|
data = obj.send(f)
fail AbstractController::ActionNotFound unless data.present?
self.content_type ||= Mime[f.to_sym]
self.response_body = data
end
end
# these Mime types send a file for download. We give proper filename and extension
- 1
%w(crossref datacite rdf_xml jats).each do |f|
- 4
ActionController::Renderers.add f.to_sym do |obj, options|
uri = Addressable::URI.parse(obj.id)
data = obj.send(f)
fail AbstractController::ActionNotFound unless data.present?
filename = uri.path.gsub(/[^0-9A-Za-z.\-]/, '_')
send_data data, type: Mime[f.to_sym],
disposition: "attachment; filename=#{filename}.xml"
end
end
- 1
ActionController::Renderers.add :bibtex do |obj, options|
uri = Addressable::URI.parse(obj.id)
data = obj.send("bibtex")
fail AbstractController::ActionNotFound unless data.present?
filename = uri.path.gsub(/[^0-9A-Za-z.\-]/, '_')
send_data data, type: Mime[:bibtex],
disposition: "attachment; filename=#{filename}.bib"
end
- 1
ActionController::Renderers.add :ris do |obj, options|
uri = Addressable::URI.parse(obj.id)
data = obj.send("ris")
fail AbstractController::ActionNotFound unless data.present?
filename = uri.path.gsub(/[^0-9A-Za-z.\-]/, '_')
send_data data, type: Mime[:ris],
disposition: "attachment; filename=#{filename}.ris"
end
- 1
ActionController::Renderers.add :citation do |obj, options|
data = obj.send("citation")
fail AbstractController::ActionNotFound unless data.present?
self.content_type ||= "text/plain"
self.response_body = data
end
- 1
require 'gender_detector'
- 1
::NameDetector = GenderDetector.new
# Be sure to restart your server when you modify this file.
# This file contains settings for ActionController::ParamsWrapper which
# is enabled by default.
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
- 1
ActiveSupport.on_load(:action_controller) do
- 1
wrap_parameters format: [:json]
end
# To enable root element in JSON for ActiveRecord objects.
# ActiveSupport.on_load(:active_record) do
# self.include_root_in_json = true
# end
- 1
Rails.application.routes.draw do
- 1
resources :heartbeat, only: [:index]
# workaround for fetching accept header in path
- 1
get '/application/*application_accept/:id', to: 'index#show', constraints: { id: /.+/, format: false }
- 1
get '/text/*text_accept/:id', to: 'index#show', constraints: { id: /.+/, format: false }
- 1
get '/image/*image_accept/:id', to: 'index#show', constraints: { id: /.+/, format: false }
- 1
get '/chemical/*chemical_accept/:id', to: 'index#show', constraints: { id: /.+/, format: false }
- 1
resources :index, path: '/', only: [:show, :index], constraints: { id: /.+/, format: false }
- 1
root :to => 'index#index'
# rescue routing errors
- 1
match "*path", to: "index#routing_error", via: :all
end
- 1
require 'rails_helper'
- 1
describe '/heartbeat', type: :api do
- 1
it "get heartbeat" do
get '/heartbeat'
expect(last_response.status).to eq(200)
expect(last_response.body).to eq("OK")
end
end
- 1
require 'rails_helper'
- 1
describe Help do
- 1
describe "get_registered_content_types", vcr: true do
- 1
it 'has registered one content_type' do
id = "10.0042/FOOBAR3"
expect(subject.get_registered_content_types(id)).to eq("text/csv" => "http://example.com")
end
- 1
it 'has registered multiple content_types' do
id = "10.4124/DEMODATASET4"
expect(subject.get_registered_content_types(id)).to eq( +"application/pdf" => "http://www.bl.uk/aboutus/stratpolprog/digi/datasets/WorkingWithDataCite_2013.pdf",
"image/jpeg" => "http://www.bl.uk/reshelp/experthelp/science/sciencetechnologymedicinecollections/researchdatasets/SearchMovieTN.jpg")
end
- 1
it 'has no registered content_types' do
id = "https://doi.org/10.4124/ccnwxhx"
expect(subject.get_registered_content_types(id)).to eq({})
end
end
- 1
describe "available_content_types" do
- 1
it 'should include all mime types' do
expect(subject.available_content_types).to eq({
"application/vnd.crosscite.crosscite+json" => :crosscite,
"application/vnd.crossref.unixref+xml"=>:crossref,
"application/vnd.datacite.datacite+xml"=>:datacite,
"application/vnd.jats+xml" => :jats,
"application/x-datacite+xml"=>:datacite,
"application/vnd.datacite.datacite+json"=>:datacite_json,
"application/vnd.schemaorg.ld+json"=>:schema_org,
"application/rdf+xml"=>:rdf_xml,
"text/turtle"=>:turtle,
"application/vnd.citationstyles.csl+json"=>:citeproc,
"application/citeproc+json"=>:citeproc,
"application/vnd.codemeta.ld+json"=>:codemeta,
"application/x-bibtex"=>:bibtex,
"application/x-research-info-systems"=>:ris,
"text/x-bibliography"=>:citation })
end
end
end